linux 修改 elf 文件的dynamic linker 和 rpath

好久没写了,z最近各种事情纠结。。。。天平座的伤不起。。。

 

转到正题,最近遇到了linux 下面不同 glibc gcc 不兼容问题,为了使高版本gcc glibc 不依赖于宿主机的环境,做了一系列的工作,结果还算满意,简单记录一下

 

glibc 版本的问题解决方案在于把 glibc 库抽离出来和可执行文件一起发布

dynamic linker   比较恶心了,由于它是写死在elf 文件的,为了让他在别的机器上跑起来,需要修改

修改目前主要有两种方法 1 编译的时候 

-Wl,-dynamic-linker  -Wl ,--rpath 这个方法在编译的时候写死了,不是很方便 

google 一番,发现了一个神器。。。

PatchELF 隆重出场

 

https://nixos.org/patchelf.html

 

里面有详细的说明,很强大不解释。。。。

 

另外在期间参考的两篇文章:

https://www.sunchangming.com/blog/post/4122.html

 

http://chenyufei.info/blog/2012-09-14/packaging-linux-applications/

 

对动态连接器感兴趣的可以看看 《程序员的自我修养。。。>>

 

posted @ 2014-12-16 16:28  songbingyu  阅读(1924)  评论(0编辑  收藏  举报