使用APR构建log4cxx

时间:2013-01-19 10:50:41

标签: c++ shared-libraries autotools suse log4cxx

我需要在SuSE linux系统上构建log4cxx库,而我不是root用户。包管理器zypper显然不知道log4cxx。

我下载了log4cxx和try to build with autotools

./configure

checking for APR... no
configure: error: APR could not be located. Please use the --with-apr option.

然后我搜索libapr

find / -name libapr*

/usr/share/doc/packages/libapr-util1
/usr/share/doc/packages/libapr1
/usr/lib64/libaprutil-1.so.0.3.12
/usr/lib64/libapr-1.so.0.4.5
/usr/lib64/libaprutil-1.so.0
/usr/lib64/libapr-1.so.0

所以我试试

./configure --with-apr=/usr/lib64/libapr-1.so.0

configure: error: the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file.

--with-apr=/usr/lib64/libapr-1.so.0.4.5--with-apr=/usr/lib64/的情况相同。

./configure要查找哪个文件? --with-apr期待什么?是所需库中的两个*.so.*文件之一吗?

5 个答案:

答案 0 :(得分:3)

您可能希望安装libapr1-devel以便可以针对它进行编译。然后尝试重新运行./configure

答案 1 :(得分:3)

我遇到了同样的问题,我认为你正在使用appache网站上的源代码,我相信它已经过时了。这个问题已经在几年前的SVN主干中得到修复了(lolol,我猜这个问题的时候就好了。)

只需拉出svn trunk的源代码并编译它:

svn checkout http://svn.apache.org/repos/asf/incubator/log4cxx/trunk apache-log4cxx 
./autogen.sh
./configure
make
make check
sudo make install

答案 2 :(得分:1)

software.opensuse.org上有人为最新版本的openSUSE以及liblog4cxx10的SLE构建了软件包。也许这对你有用,而不是建立自己的。

答案 3 :(得分:0)

我在3.3.4-5.fc17.x86_64遇到了同样的问题,并通过将相应的H文件包含在make实用程序报告的CPP文件中来解决它。 在我的情况下,每次获取新错误时都应该运行make实用程序3次,并通过在报告的CPP文件中添加适当的包含H来修复它。

主要思想如下: 1)通过运行man实用程序进行检查,其中定义了错误中提到的函数。 例如,man memmove说它是在string.h头文件中定义的。 2)将适当的包含文件添加到CPP文件中。 例如,make实用程序抱怨inputstreamreader.cpp没有找到memmove函数。打开inputstreamreader.cpp文件并将string.h添加到其头文件中。 3)运行make实用程序,直到编译log4cxx没有错误。

答案 4 :(得分:0)

迈克尔戈伦是对的。 缺少多个“.h”文件。 所以你必须在启动make之前添加它们。

sed -i '1i#include <string.h>\n'    src/main/cpp/inputstreamreader.cpp
sed -i '1i#include <string.h>\n'    src/main/cpp/socketoutputstream.cpp   
sed -i '1i#include <string.h>\n'    src/examples/cpp/console.cpp       
sed -i '1i#include <stdio.h>\n'     src/examples/cpp/console.cpp