3

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

我下载 log4cxx 并尝试使用 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.*文件之一是所需的库吗?

4

5 回答 5

3

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

于 2013-01-19T22:35:35.067 回答
3

我遇到了同样的问题,我认为您正在使用我认为已过时的 appache 网站的源代码。几年前,这个问题已在 SVN 主干中得到解决(哈哈,我猜就在这个问题被问到的时候)。

只需拉取 svn 主干的源代码并编译它:

svn checkout http://svn.apache.org/repos/asf/incubator/log4cxx/trunk apache-log4cxx 
./autogen.sh
./configure
make
make check
sudo make install
于 2016-12-16T12:26:55.733 回答
1

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

于 2013-01-20T05:25:13.713 回答
1

迈克尔戈伦是对的。缺少多个“.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       
于 2018-06-05T14:04:08.153 回答
0

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

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

于 2013-10-23T21:56:15.580 回答