apache-log4cxx编译问题
问题
由于项目需要用到c++日志系统log4cxx,记录安装log4cxx库遇到的坑。
环境准备
- 系统ubuntu 18.04
- gcc编译器7.5.0
- Linux forlinx 4.4.189 aarch64 GNU/Linux
已知:
log4cxx
是一个依赖于apr
和apr-util
的 C++ 日志库。apr
是 Apache 提供的一个支持跨平台的运行时库。apr-util
是apr
的一个扩展库,提供了更多实用的功能和数据结构
所以需要安装三个库:
log4cxx
官方下载地址:https://logging.apache.org/log4cxx/latest_stable/download.htmlapr
、apr-util
官方下载地址:https://apr.apache.org/download.cgi
拓展库
zip压缩库、unzip解压库官方下载地址:https://sourceforge.net/projects/infozip/files/
下载解压后,将相对路径"./unix/Makefile"文件,拷贝到"./"目录下;
修改Makefile文件内"CC"为系统编译器名称,最后"make generic"编译为通用版本即可;
expat库(解析XML文档)官方下载地址:https://github.com/libexpat/libexpat/releases
编译
注意:需要按照顺序编译!
- 编译apr,指定生成路径
/usr/local/apr
tar -xvf apr-1.7.4.tar.gz
cd apr-1.7.4
./configure --prefix=/usr/local/apr
make -j4
make install
- 编译apr-util,指定生成路径/usr/local/apr-util`,--with-apr指定APR库路径,避免依赖问题
tar -xvf apr-util-1.6.3.tar.gz
cd apr-util-1.6.3
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make -j4
make install
- 编译log4cxx(官网CMake编译教程地址:https://logging.apache.org/log4cxx/latest_stable/build-cmake.html)
tar -xvf apache-log4cxx-1.2.0.tar.gz
cd apache-log4cxx-1.2.0
mkdir build
cd build
cmake ..
进行到cmake这一步时,报错:No package 'apr-1' found找不到apr-1包
找不到apr-1的包,我不是安装在/usr/local/apr目录下了吗?
看网上说,在运行cmake配置命令时指定APR路径,但是,依然没有解决问题。
cmake -DAPR_INCLUDE_DIR=/usr/local/apr/include \
-DAPR_LIBRARY=/usr/local/apr/lib/libapr-1.so \
-DAPRUTIL_INCLUDE_DIR=/usr/local/apr-util-1/include \
-DAPRUTIL_LIBRARY=/usr/local/apr-util-1/lib/libaprutil-1.so \
..
解决方法
只需设置一下所需库的PKG_CONFIG_PATH
路径
PKG_CONFIG_PATH路径下,".pc" 文件定义了库的编译和链接选项
APR库的pc文件路径/usr/local/apr/lib/pkgconfig/apr-1.pc
export PKG_CONFIG_PATH=/usr/local/apr/lib/pkgconfig:$PKG_CONFIG_PATH
再次编译,报错:No package 'apr-util-1' found找不到apr-util-1包
同样的操作
export PKG_CONFIG_PATH=/usr/local/apr-util/lib/pkgconfig:$PKG_CONFIG_PATH
再次编译成功!!!