linux系统动态库加载搜索顺序

举报
zxros10 发表于 2020/03/31 10:46:07 2020/03/31
【摘要】 在我们的AI开发中,经常遇到:需要修改AI框架中的库,比如说libpresenteragent.so, libascend_ezdvpp.so等不同的应用要求同一个第三方库的不同版本,比如说opencv, protobuf之类的当不同的应用需要加载不同版本库时,时常会发生莫名其妙的错误,这个可能就是链接的库不是需要的版本导致。有很多方法解决这个问题。其中之一就是利用linux动态库加载搜索顺...


在我们的AI开发中,经常遇到:

  1. 需要修改AI框架中的库,比如说libpresenteragent.so, libascend_ezdvpp.so等

  2. 不同的应用要求同一个第三方库的不同版本,比如说opencv, protobuf之类的

当不同的应用需要加载不同版本库时,时常会发生莫名其妙的错误,这个可能就是链接的库不是需要的版本导致。有很多方法解决这个问题。其中之一就是利用linux动态库加载搜索顺序来解决。linux动态库运行加载(注意不是编译链接)顺序如下:


1.编译目标代码时使用"-Wl, -rpath"指定的动态库搜索路径。这个具有最高优先级,其中-Wl是告诉gcc将后面的选项传给


2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;


3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;//配置后要运行 ldconfig命令才能生效


4.默认的动态库搜索路径/lib;


5.默认的动态库搜索路径/usr/lib;


1是最优先的, 使用gcc -Wl, -rpath,./ ,-rpath,./test/lib  指定了两个搜索路径


-Wl, 表示后面的参数将传给 link 程序 ld


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。