1

情况是我正在尝试获取从 Internet ( http://findingscience.com/pymur/ ) 下载的代码进行编译,而我正在使用的机器上没有 SUDO 权限。

我已将问题追溯到 configure.ac 中的一行:

AC_CHECK_HEADER([indri/Index.hpp],,[
   AC_MSG_ERROR([Could not find lemur's header files.])
])

因为我收到了错误消息./configure

checking indri/Index.hpp usability... no
checking indri/Index.hpp presence... no
checking for indri/Index.hpp... no
configure: error: Could not find lemur's header files.

我已经尝试直接修改它,使其indri/Index.hpp具有硬编码路径/path/to/indri/Index.hpp,这似乎没有帮助。

任何无需我修改 /usr 等目录即可编译代码的解决方案(因为我没有 root 权限)将不胜感激。

4

2 回答 2

2

您绝对不需要或不想修改configure.ac. 只需将头文件安装在您确实具有写入权限的位置并告诉配置脚本如何找到它们。例如,如果您在 HOME 目录中安装头文件(以便 $HOME/include/indri/Index.hpp 存在),则运行:

configure CPPFLAGS=-I$HOME/include

这应该适用于大多数平台。请注意,使用路径修改 configure.ac/path/to/indri/Index.hpp将失败,因为您的工具链将使用该路径作为相对路径,并且可能会在/usr/include/path/to/indri/Index.hpp.

于 2013-08-09T23:46:16.050 回答
1

通常,我会按照 William Pursell 的建议去做。不幸的是,这行不通。我尝试过这个。pymur 包中有一个错误,它configure.ac依赖于一个非常旧版本的AC_PYTHON_DEVEL宏,CPPFLAGS在检查之前会破坏indri/Index.hpp,所以这些目录不会在g++命令行中。

如果您想解决这个问题,您必须从 Autoconf 宏存档中获取该宏的更新版本并将其复制到acinclude.d(删除后acinclude.d/ac_python_devel.m4)并重新运行autogen.sh. 我能够调用CPPFLAGS="-I /path/to/indri/include" ./configure而不是让它绊倒那个特定的问题。

这确实是 pymur 维护者应该解决的问题。

于 2013-08-12T18:07:53.110 回答