如何改掉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这种东西进行配置编译,如何改成我上面希望得到的东西?
...全文
130 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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传这个库的位置
回复
相关推荐
发帖
Linux_Kernel
创建于2007-08-27

4155

社区成员

Linux/Unix社区 内核源代码研究区
申请成为版主
帖子事件
创建了帖子
2010-10-28 08:23
社区公告
暂无公告