Afr*_*Afr 6 libraries path dependencies software-installation boost
我正在尝试从 CentOS 中的源代码编译和安装boost 1.54。
文档非常简单,互联网上有很多教程 ( 1 ) ( 2 ) ( 3 )。这就是我所做的:
wget http://sourceforge.net/projects/boost/files/boost/1.54.0/boost_1_54_0.tar.gz
tar -xzvf boost_1_54_0.tar.gz
cd boost_1_54_0
./bootstrap.sh --prefix=/usr/local
./b2 install --with=all
Run Code Online (Sandbox Code Playgroud)
这是正确编译和安装boost /usr/local/lib
,一切看起来都很好。
现在我编译其他需要使用 boost 的软件,gcc
一切正常。根据我的理解,只要gcc
找到所需的库,一切都应该没问题。
但现在的问题是:如果我运行我编译的二进制文件,我会收到以下错误:
./myProgram
./myProgramm: error while loading shared libraries: libboost_system.so.1.54.0: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
为什么找不到库?
另外我试过:
ldconfig
locate boost
[...]
Run Code Online (Sandbox Code Playgroud)
但是找不到boost库。我手动寻找路径,它是:
/usr/local/lib/libboost_system.so.1.54.0
Run Code Online (Sandbox Code Playgroud)
我也尝试创建符号链接,/usr/lib
但这也不能解决这个问题。
有任何想法吗?我能做什么?
您必须在编译程序时添加-Wl,-R/usr/local/lib
到LDFLAGS
。
-R
是一个链接器选项(用于指定运行时链接器路径) --Wl
指示gcc
将其传递给ld
.
对于共享库,您必须确保链接器在编译期间和运行期间找到它们(参见标志-L
和-R
)。
您可以使用
$ ldd myProgramm
Run Code Online (Sandbox Code Playgroud)
验证运行时链接器路径是否设置正确,即它是否可以在程序启动时找到所需的共享库/它将加载哪些共享库。
归档时间: |
|
查看次数: |
24224 次 |
最近记录: |