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 @   程序员没有头发  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示