【发布时间】:2014-11-27 07:45:40
【问题描述】:
我正在使用 CMake (3.0.2) 构建一个包。这个包依赖于 boost_python 和其他一些。 /usr/lib64 中有一个旧版本,我自己的目录 /home/x/opt/boost-1.56/lib 中有另一个新版本。有一个符号链接 /home/x/opt/boost-1.56/lib64 来处理多架构 gcc。
但是,即使我设置了BOOST_ROOT=/home/x/opt/boost-1.56/lib,并且在 CMakeCache.txt 中有
//Boost python library (release)
Boost_PYTHON_LIBRARY_RELEASE:FILEPATH=/home/x/opt/boost-1.56/lib/libboost_python.a
生成的link.txt包含这样一行,而不是完整路径:
-Wl,-Bstatic -lboost_python
当make 时,它链接到/usr/lib64/ 下的那个,这是错误的。
问题:
- 如何让 CMake 使用完整路径?如文档所述,仅当系统默认文件夹下的库处理 -Bstatic 时,我的情况不应该如此。
- 为什么即使我在
LD_LIBRARY_PATH和LIBRARY_PATH中有“/home/x/opt/boost-1.56/lib”,-Wl,-Bstatic -lboost_python 也不起作用?据我所知,它们应该覆盖系统默认值。
信息:
gcc --print-search-dir 给出:
/home/x/opt/boost-1.56/lib/x86_64-unknown-linux-gnu/4.9.2/
/home/x/opt/boost-1.56/lib/../lib64/
/lib/x86_64-unknown-linux-gnu/4.9.2/
/lib/../lib64/
/usr/lib/x86_64-unknown-linux-gnu/4.9.2/
/usr/lib/../lib64/
/home/x/opt/boost-1.56/lib/
/lib/
/usr/lib/
【问题讨论】: