apache-log4cxx编译问题

问题

由于项目需要用到c++日志系统log4cxx,记录安装log4cxx库遇到的坑。

环境准备

  • 系统ubuntu 18.04
  • gcc编译器7.5.0
  • Linux forlinx 4.4.189 aarch64 GNU/Linux

已知:

  1. log4cxx 是一个依赖于 aprapr-util 的 C++ 日志库。
  2. apr 是 Apache 提供的一个支持跨平台的运行时库。
  3. apr-utilapr 的一个扩展库,提供了更多实用的功能和数据结构

所以需要安装三个库:

  1. log4cxx官方下载地址:https://logging.apache.org/log4cxx/latest_stable/download.html
  2. aprapr-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
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

再次编译成功!!!

posted @ 2024-08-29 18:06  程序员没有头发  阅读(34)  评论(0编辑  收藏  举报