0

我正在尝试在我没有 root 访问权限的网络上构建一些软件(即 python 模块图形工具, http ://projects.skewed.de/graph-tool/)。因此,我使用 --prefix 和 --with-include 标志以及 CPPFLAGS 和 LD_LIBRARY_PATH 环境变量自己在本地磁盘上安装了所有依赖项。

完成此操作后,我收到一个奇怪的错误,即找不到我的依赖项之一(即 CGAL:http ://www.cgal.org/ )。

配置脚本说checking for main in -lCGAL... no,在打印大量编译器警告后,makefile 失败了/usr/bin/ld: cannot find -lCGAL

据推测,这意味着它根本无法找到已安装的库。几乎所有其他发生这种情况的情况,谷歌显示他们没有正确设置库的符号链接。它似乎在这里正确设置:

truffles:rlaplant[147] echo $LD_LIBRARY_PATH
/local_mount/space/truffles/1/users/rlaplant/graphtool/parts/lib:/local_mount/space/truffles/1/users/rlaplant/graphtool/parts/
truffles:rlaplant[160] file parts/lib/libCGAL.so
parts/lib/libCGAL.so: symbolic link to `libCGAL.so.10'

我真的不知道出了什么问题。也许我使用 LD_LIBRARY_PATH 的方式有问题?

4

1 回答 1

0

我想我知道我的问题是什么了。

尽管 libCGAL.so 是一个动态链接库,但编译脚本实际上所做的是将其视为静态库。我不知道它能够做到这一点,我认为如果它是一个静态链接库,它也不能动态链接,反之亦然(我认为这在实践中通常是正确的)。

我在这里所做的是设置 LIBRARY_PATH 来查找静态库,而不是 LD_LIBRARY_PATH 在运行/链接时查找动态链接库。我相信,如果配置脚本被更好地编写以考虑到我在这里尝试使用有趣的前缀做的事情,那么这种区别将没有实际意义,因为这样它就可以只使用 -L 标志并且就我而言可以看出这对静态和动态链接都有效,但 LD_LIBRARY_PATH 环境变量不能(但这可能不是真的)。

于 2013-03-07T21:15:12.037 回答