前面有一篇Windows下的log4cxx编译, 这里记录下在linux上的编译过程.
环境:CentOS6.3 gcc-4.4.6
-> view os version: lsb_release -a
lsb_release prints certain LSB (Linux Standard Base) and Distribution
information
#lsb_release -a
LSB Version: :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-
4.0-noarch:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.3 (Final)
Release: 6.3
Codename: Final
-> view kerenl and gcc version: -cat /proc/version
# cat /proc/version
Linux version 2.6.32-279.el6.i686 (mockbuild@c6b9.bsys.dev.centos.org) (gcc
version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Fri Jun 22 10:59:55
UTC 2012
log4cxx版本:
apache-log4cxx-0.10.0
log4cxx是在apache portable runtime library: apr-1.4.6 apr-util-1.5.2
第一步: 编译apr
tar -xcf apr-1.4.6.tar.gz -C /usr/local/apr/
cd /usr/local/apr/apr-1.4.6
./configure --prefix=/usr/local/apr
make
make install
///////////////////
./configure --help 可以看帮助. --prefix=/usr/local/apr是配置安装目录, apr最终安
装在/usr/local/apr下.
make - 编译apr
make install - 安装, 就是将include, lib, bin文件拷贝到/usr/local/apr下, 并建立相
应的目录结构.
第二步: 编译apr-util
apr-util需要以来apr, 所以需先编译apr
tar -xcf apr-util-1.5.2.tar.gz -C /usr/local/apr-util/
cd /usr/local/apr-util/apr-util-1.5.2
./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/
make
make install
////////////////////////
--with-apr - 此option指明apr的路径
第三步: 编译log4cxx
解压->到解压后的目录
./configure --prefix=/usr/local/log4cxx/ --with-apr=/usr/local/apr/ --with-
apr-util=/usr/local/apr-util/
make
////////////
make过程中, 会遇到错误发生
第一个错误:
inputstreamreader.cpp:66: error: 'memmove' was not declared in this scope
memmove没有申明, 查linux编程文档, memmove在string.h中申明.
./src/main/cpp/inputstreamreader.cpp -> 增加 #include <string.h>
./src/main/cpp/socketoutputstream.cpp -> 增加 #include <string.h>
./src/examples/cpp/console.cpp -> 增加 #include <stdio.h> #include <string.h>
///////////////
make
make install
最后配置/etc/ld.so.conf - 需要root权限
增加:
/usr/local/apr/lib
/usr/local/apr-util/lib
/usr/local/log4cxx/lib
若没有root权限, 只有通过LD_LIBRARY_PATH来配置lib path
vi $HOME/.bash_profile
增加
export LD_LIBRARY_PATH=/usr/local/apr/lib:/usr/local/apr-util/lib:/usr/local/log4cxx/lib:.:$LD_LIBRARY_PATH
source .bash_profile -->生效
echo $LD_LIBRARY_PATH可以查看.
---> OK.
如何使用, 我没用, 听说log4cxx有内存泄露, 我用了自己写的log代码, 网上有很多简单的用法介绍. 因为别人编写的模块中使用了这个库, 所以这里环境必须配齐.