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/
对动态连接器感兴趣的可以看看 《程序员的自我修养。。。>>