如果使用自己手动生成的动态链接库.so文件,但是这个.so文件,没有加入库文件搜索路劲中,程序运行时可能会出现找不到动态链接库的情形。
可以通过ldd命名来查看可执行文件依赖的动态链接库,如下(其中test为可执行程序):

如:ldd test
解决这个问题: 1.修改/etc/ld.so.conf配置 (1)将.so文件路径的目录添加到/etc/ld.so.conf
直接添加: sudo vim /etc/ld.so.conf
然后在ld.so.conf 末尾新添加.so库路径
添加配置: 创建exe.conf文件,里面加.so库路径,将该文件放到/etc/ld.so.conf.d目录下; 在/etc/ld.so.conf文件中增加一行include ld.so.conf.d/exe.conf
(2)使得修改生效
sudo /sbin/ldconfig
2.通过编译选项 -wl,-rpath
-Wl选项告诉编译器将后面的参数传递给链接器
-rpath指定动态搜索的路径
3.设置 LD_LIBRARY_PATH
LD_LIBRARY_PATH环境变量主要是用于指定动态链接器(ld)查找ELF可执行文件运行时所依赖的动态库(so)的路径,其内容是以冒号分隔的路径列表。
ld链接器将优先在该变量设置的路径中查找,若未找到则在标准库路径/lib和/usr/lib中继续搜索。
临时修改: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
永久修改:修改~/.bashrc或~/.bash_profile或系统级别的/etc/profile
a. 在其中添加例如export PATH=/opt/ActiveP/lib:$LD_LIBRARY_PATH b. source .bashrc (Source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录)
|