分享

linux找不到动态链接库 .so文件的解决方法

 Runs丶SS11 2018-01-12

如果使用自己手动生成的动态链接库.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命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录)


 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多