1.介绍

Log4cxx是开放源代码项目Apache Logging Service的子项目之一,是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计,有关log4cxx的更多信息可以从Apache Loggin Service的网站http://logging.apache.org获得。

2.获取软件包

log4cxx需要两个辅助库,可以从官方网站获得合适的版本:https://apr.apache.org/download.cgi

我们拿最新的软件包:

apr-1.5.0.tar.gz

apr-util-1.5.3.tar.gz

接下来获取log4cxx,下载链接:https://logging.apache.org/log4cxx/download.html

我们拿最新的软件包:

apache-log4cxx-0.10.0.tar.gz

3.编译安装

tar zxvf  apr-1.5.0.tar.gz

首先安装apr-1.5.0,切换cd apr-1.5.0,配置./configure --prefix=/usr/local/apr,接着make, make install

--------------------

编译安装过程中libuuid.a遇到点问题,error如下:

/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../lib64/libuuid.a(gen_uuid.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../lib64/libuuid.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[1]: *** [libapr-1.la] Error 1
make[1]: Leaving directory `/opt/log4cxx/apr-1.5.0'
make: *** [all-recursive] Error 1

--------------------

问题的解决过程:

wget http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-1.41.14.tar.gz

tar xvzf  e2fsprogs-1.41.14.tar.gz

export CFLAGS="-fPIC"
./configure --prefix=/usr/local/e2fsprogs
make
make install
make install-libs
cp /usr/local/e2fsprogs/lib/libuuid.a /usr/lib64/

--------------------

tar zxvf apr-util-1.5.3.tar.gz

接着安装apr-util-1.5.3,切换至cd ../apr-util-1.5.3, ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr,接着make,make install

tar zxvf apache-log4cxx-0.10.0.tar.gz

最后安装apache-log4cxx-0.10.0,注意我们需要日志支持中文显示,切换至cd ../apache-log4cxx-0.10.0,配置./configure --prefix=/usr/local/log4cxx --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-charset=utf-8 --with-logchar=utf-8

注意配置前需进行以下操作:
1)vim src/main/cpp/inputstreamreader.cpp
增加#include <string.h>;
否则会出现inputstreamreader.cpp:66: error: 'memmove' was not declared in this scope
make[3]: *** [inputstreamreader.lo] 错误 1

2)vim src/main/cpp/socketoutputstream.cpp
增加#include <string.h>;
否则会出现socketoutputstream.cpp:52: error: 'memcpy' was not declared in this scope

3)vim src/examples/cpp/console.cpp
增加#include <string.h>,#include <stdio.h>;
否则会出现
console.cpp: In function ‘int main(int, char**)’:
console.cpp:58: 错误:‘puts’在此作用域中尚未声明

4.测试

-------------------------------------------

[root@cdn-101-11 ]# cat test.cpp
#include "log4cxx/logger.h"
#include "log4cxx/basicconfigurator.h"
#include "log4cxx/helpers/exception.h"

using namespace std;
using namespace log4cxx;
using namespace log4cxx::helpers;

int main(int argc, char* argv[])
{
LoggerPtr logger(Logger::getLogger("MyApp"));

try
{
BasicConfigurator::configure();
//LOG4CXX_INFO(logger, _T("你说hello"));
LOG4CXX_DEBUG(logger, "你好 world");
}
catch (Exception&)
{

}
return 0;
}

-------------------------------------------

g++ -Wall test.cpp -ggdb -o test -I/usr/local/log4cxx/include/ -L/usr/local/log4cxx/lib/ -llog4cxx

export LD_LIBRARY_PATH=/usr/local/log4cxx/lib

-------------------------------------------

[root@cdn-101-11 ]# ./test
0 [0x7f3963b64760] DEBUG MyApp null - 你好 world

编译安装log4cxx的更多相关文章

  1. (转)Linux下编译安装log4cxx

    Linux下编译安装log4cxx 一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. log4cxx ...

  2. 在RHEL5.2 64bit下编译安装log4cxx错误

    apache-log4cxx.0.10.0 依赖于apache-apr和apache-apr-utils两个包 先安装他们俩,然后编译log4cxx,发现make失败,错误如下 ronized.o . ...

  3. Centos6.5下编译安装mysql 5.6

    一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...

  4. CENTOS 6.5 平台离线编译安装 PHP5.6.6

    一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...

  5. Linux下编译安装Vim8.0

    什么是Vim? Vim 是经典的 UNIX 编辑器 Vi 的深度改良版本.它增加了许多功能,包括:多级撤销.格式高亮.命令行历史.在线帮助.拼写检查.文件名补完.块操作.脚本支持,等等.除了字符界面版 ...

  6. OpenSUSE下编译安装OpenFoam

    在不是Ubuntu系统下安装OpenFoam,需要采用编译安装的方式.以下以OpenSuSE为例进行编译安装. 1 软件包准备 需要下载两个程序包: OpenFOAM-4.x-version-4.1. ...

  7. 不要着急改代码,先想想--centos 6.8下编译安装tmux

    诸位读者新年好,2017开年第一篇博客,请允许我先问候一下看到这篇博客的诸位.写博客是我2017年定下的目标之一,希望我会坚持下去. 最近打算尝试一下tmux这个神器,于是有了这一篇关于思维方式的Bl ...

  8. protobuf的编译安装

    github地址:https://github.com/google/protobuf支持多种语言,有多个语言的版本,本文采用的是在centos7下编译源码进行安装. github上有详细的安装说明: ...

  9. 编译安装mysql

    参考:http://www.centoscn.com/CentosServer/www/2015/0422/5245.html 安装mysql5.6.17 1.按照标准需要给mysql创建所属用户和用 ...

随机推荐

  1. JSP/java 执行创建批处理文件,并执行批处理事务。

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) { InputStream in = null; Inpu ...

  2. Spring Boot 集成RabbitMQ

    在Spring Boot中整合RabbitMQ是非常容易的,通过在Spring Boot应用中整合RabbitMQ,实现一个简单的发送.接收消息的例子. 首先需要启动RabbitMQ服务,并且add一 ...

  3. java代码包装类----------Integer

    总结:我的笔试挂了..基础的继承不懂不会.我不知道到底是哪里的问题. 要好好反思 package com.da.ima2; public class jrfk { // int整型不能直接转化为Int ...

  4. pycharm中 unittests in xxxx 运行模式

    pycham中 当你运行时 ,使用的 是  Run "unittests in  xxxx" 模式时候,if __name__ == '__main__':  后面的代码是不执行的 ...

  5. 11-15SQLserver基础--数据库之范式理论

    数据库的设计理论与思路 在设计数据库的时候,有一个著名的设计理论---范式理论. 1.内容: 第一范式:每一列的数据类型要单一,必须要统一: 第二范式:在设计主键的时候,主键尽量更能体现表中的数据信息 ...

  6. vsftp部署和优化错误

    ftp登录失败 vim /etc/vsftpd/vsftpd.conf 添加虚拟机配置的时候有空行,删除空行解决

  7. 如何实现1080P延迟低于500ms的实时超清直播传输技术<转>

    转载地址:http://www.yunweipai.com/archives/9037.html 最近由于公司业务关系,需要一个在公网上能实时互动超清视频的架构和技术方案.众所周知,视频直播用 CDN ...

  8. 使用批处理替换windows系统中的hosts文件

    chcp 936 >nul@echo offmode con lines=30 cols=60%1 mshta vbscript:CreateObject("Shell.Applica ...

  9. JS jquery ajax 已看1 有用

    4.form中的input可以设置为readonly和disable,请问2者有什么区别? readonly不可编辑,但可以选择和复制:值可以传递到后台 disabled不能编辑,不能复制,不能选择: ...

  10. windows VS2013 编译安装QWT6.1和QWTPolar1.1.1

    QWT的编译和配置 1. 下载QWT从官网 For getting a snapshot with all bugfixes for the latest 5.2 release: svn expor ...