什么场景会让-rpath指定的链接库路径失效

lby_2016 2016-08-27 03:01:30
我这边遇到一个现象:

1、动态库是使用“-Wl,-rpath”指定动态库搜索路径,使用readelf -d看是有编译进去

0x0000000f (RPATH) Library rpath: [../other]
0x0000001d (RUNPATH) Library runpath: [../other]

2、linux上环境变量是

ATCAX86_F0S3:/opt/# echo $LD_LIBRARY_PATH
/opt/:

3、动态库在链接的时候反而是先找到/opt去了,请问各位知道什么场景会让-rpath失效?多谢
...全文
1282 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-08-29
  • 打赏
  • 举报
回复
没有绝对的安全。
辰岡墨竹 2016-08-28
  • 打赏
  • 举报
回复
嗯,其实我觉得../可能会被解释为进程的当前路径,而不是动态库所在的路径。 别用rpath比较好,在ld.so.conf.d写配置吧。
辰岡墨竹 2016-08-28
  • 打赏
  • 举报
回复
你是可执行文件链接动态库,还是动态库链接动态库? 后者的话,用-rpath-link。
lby_2016 2016-08-28
  • 打赏
  • 举报
回复
引用 2 楼 Bokutake 的回复:
嗯,其实我觉得../可能会被解释为进程的当前路径,而不是动态库所在的路径。 别用rpath比较好,在ld.so.conf.d写配置吧。
用ld.so.conf.d写配置的话,优先级比环境变量要低哦。我这边诉求要优先找我进程或动态库指定的链接库路径。环境变量别人会改掉的,不安全。
lby_2016 2016-08-28
  • 打赏
  • 举报
回复
引用 1 楼 Bokutake 的回复:
你是可执行文件链接动态库,还是动态库链接动态库? 后者的话,用-rpath-link。
这两种场景都存在,我在网上看了相关文章, 动态库加载路径之RPATH与RUNPATH(小记) http://www.oschina.net/question/234345_52687 发现我这边的环境在编译的时候,使用“-Wl,-rpath”,默认会加--enable-new-dtags,所以同时出现RPATH/RUNPATH,导致了这个问题。 但是网上资料都是说缺省不会加,不知道从哪一个连接器ld版本开始缺省就变为--enable-new-dtags了。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧