linux系统动态库加载搜索顺序
【摘要】 在我们的AI开发中,经常遇到:需要修改AI框架中的库,比如说libpresenteragent.so, libascend_ezdvpp.so等不同的应用要求同一个第三方库的不同版本,比如说opencv, protobuf之类的当不同的应用需要加载不同版本库时,时常会发生莫名其妙的错误,这个可能就是链接的库不是需要的版本导致。有很多方法解决这个问题。其中之一就是利用linux动态库加载搜索顺...
在我们的AI开发中,经常遇到:
需要修改AI框架中的库,比如说libpresenteragent.so, libascend_ezdvpp.so等
不同的应用要求同一个第三方库的不同版本,比如说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)