编译失败并出现错误"main not found in -lCGAL",符号链接不是问题



我试图在我没有root访问权限的网络上构建一些软件(即python模块graph-tool, 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的方式有问题?

我想我知道问题出在哪里了。

尽管libCGAL

。作为一个动态链接库,编译脚本实际上是把它当作一个静态库来处理。我不知道它能做到这一点,我认为如果它是一个静态链接库,它也不能动态链接,反之亦然(我认为这在实践中通常是正确的)。

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

最新更新