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. 蓝桥杯 算法训练 ALGO-142 P1103

    算法训练 P1103   时间限制:1.0s   内存限制:256.0MB 编程实现两个复数的运算.设有两个复数 和 ,则他们的运算公式为: 要求:(1)定义一个结构体类型来描述复数. (2)复数之间 ...

  2. 线程及同步的性能 – 线程池/ ThreadPoolExecutors/ ForkJoinPool

    线程池和ThreadPoolExecutors 虽然在程序中可以直接使用Thread类型来进行线程操作,但是更多的情况是使用线程池,尤其是在Java EE应用服务器中,一般会使用若干个线程池来处理来自 ...

  3. Thread之一:线程生命周期及五种状态

    <Thread之一:线程生命周期及五种状态> <juc线程池原理(四): 线程池状态介绍> 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较 ...

  4. PAT L3-008. 喊山(BFS)C4 初赛30分

    喊山(30 分) 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤.呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的. ...

  5. python with open as f 写韩文中文乱码

    python3和python2的写法不一样具体如下: python3: with open(r'd:\ssss.txt','w',encoding='utf-8') as f: f.write(u'中 ...

  6. PowerDesigner的Additional Checkes 中使用统配符

    在Domian或字段的的约束条件中,会用的正则表达式等约束.但正则表达式 regexp_like(ICAO,'^([A-Z]{4}$')中要出现明确字段名如ICAO,每个使用同样约束的字段都要修改此字 ...

  7. VS2008 C++ 项目怎样添加“依赖”、“库目录”和“包含目录”

    随笔 - 79, 文章 - 0, 评论 - 7, 引用 - 0 1. 添加编译所需要(依赖)的 lib 文件 [解决方案资源管理器]“项目->属性->配置属性->连接器->输入 ...

  8. js和jQuery常用选择器

    笔者觉得js是前台基础中的基础,而其选择器则是js基础中的基础,因长期使用框架导致js生疏,所有查资料,回顾一下js的常用选择器: 1.document.getElementById("id ...

  9. bootstrap媒体查询常用写法

    @media (max-width: 768px) { /*超小屏幕设备 手机*/ } @media (min-width: 768px) and (max-width: 992px) { /*小屏幕 ...

  10. Quartz_1_简单编程式任务调度使用(SimpleTrigger)

    最近在工作中,要做定时任务的更能,最开始的时候,想到的是 JavaSE 中,自带 Timer 及 TimerTask 联合使用,完成定时任务.最后发现,随着业务的复杂,JDK 中的 Timer 和 T ...