如何改掉elf文件中动态库的路径

unbutun 2010-10-28 08:23:53
我的意思是:
拿着比如vi的源码,编译后,ldd vi会列出


[root@localhost bin]# ldd vi
linux-gate.so.1 => (0x0021e000)
libm.so.6 => /lib/libm.so.6 (0x00d04000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00d8e000)
libncurses.so.5 => /lib/libncurses.so.5 (0x049b1000)
libacl.so.1 => /lib/libacl.so.1 (0x05525000)
libc.so.6 => /lib/libc.so.6 (0x00b89000)
libtinfo.so.5 => /lib/libtinfo.so.5 (0x04996000)
/lib/ld-linux.so.2 (0x00b65000)
libdl.so.2 => /lib/libdl.so.2 (0x00cfd000)
libattr.so.1 => /lib/libattr.so.1 (0x0044b000) ---如前面的/lib/我如何把这个路径改成我的路径


前提是linux的应用,用autoconf automake建立的configure这种东西进行配置编译,如何改成我上面希望得到的东西?
...全文
309 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
gcc -Wl,-rpath,./ -o t main.c
qihuanfengyun 2010-10-29
  • 打赏
  • 举报
回复
哦,学习了 呵呵……
Rain208 2010-10-29
  • 打赏
  • 举报
回复
可以LD_LIBRARY_PATH 设置动态库的路径

也可以在程序中使用环境变量来获取特定动态库的路径。
这样在使用程序的时候, 可以先使用export 把路径设置好了。
xiaocai0001 2010-10-28
  • 打赏
  • 举报
回复
利用LD_LIBRARY_PATH设置.so搜索路径, 或者设置ld.so.conf, 将你自己的路径加入到搜索路径

ldd显示出的是搜索到的动态库, 并不是在vi elf文件中有这样的路径信息.
deep_pro 2010-10-28
  • 打赏
  • 举报
回复
比较简单的办法,不要修改elf
把/lib/libattr.so.1 换成软连接,指向你要的目标

要么就是编译vivi时修改Makefile或者给configure传这个库的位置

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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