当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 这是BUG还是使用的问题?-Wl,-rpath 选项失效
帖子发表于 : 2018-01-08 13:26 

注册: 2011-04-30 23:10
帖子: 139
送出感谢: 0 次
接收感谢: 0 次
有一个程序,他依赖几个共享库,这些共享库没有放在系统目录下,而是在这个程序的目录下。比如下面这样
LOADSO = -Wl,-rpath=./1/:./2/:./3/:./4/:./5/:./6/:./7

这个选项吧SO的库全部放都包含进来了,我检查过了,那些共享库的目录和名字都没问题。
为什么我用ldd查看会提示NOTFOUND?

同样的编译脚本我用CENTOS7 编译出来是正确的。
ubuntu 好像失效了一样 这个选项,我测试了下 ,比如 a.so b.so c.so 三个so a依赖b 这个时候b.so 就会提示notfound
但是我如果在我程序里面调用b.so 的随便一个函数,就正确了。。怎么会这样。。如果我不调用这个so的函数就会提示notfound。。。。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 这是BUG还是使用的问题?-Wl,-rpath 选项失效
帖子发表于 : 2018-01-10 20:36 
头像

注册: 2008-09-18 13:11
帖子: 2809
送出感谢: 1
接收感谢: 461
在18.04下试了下,没问题啊。
a.c里有foo(),b.c里有bar(),bar()会调用foo(),分别编译成liba.so和libb.so,放到/tmp/1和/tmp/2下
main()里执行bar(),编译用
gcc -L/tmp/2 -L/tmp/1 -o main -Wl,-rpath=./1/:./2/ main.c -lb -la
在/tmp下ldd的结果
linux-vdso.so.1 => (0x00007ffd819e5000)
libb.so => ./2/libb.so (0x00007f0e5e96c000)
liba.so => ./1/liba.so (0x00007f0e5e76a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0e5e38a000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0e5ed70000)


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 这是BUG还是使用的问题?-Wl,-rpath 选项失效
帖子发表于 : 2018-01-13 11:07 

注册: 2011-04-30 23:10
帖子: 139
送出感谢: 0 次
接收感谢: 0 次
。。。哦 不好意思 没写版本 是17.04会出这个问题
我现在用回16.04 了 正常了,其他版本系统没试过。。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Bing [Bot] 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译