制作,发布便携(发行版独立)软件纲领

Mon 16 June 2014 | tags:

1 - 如果能直接编译成静态的那自然是比较省事了,但很多时候没办法这样,需要动态的,那就接着看吧

2 - 在相对比较老的发行版上编译,这样是用老GLIBC在新的发行版上也能运行,反之则不行。

3 - 附带共享库用RPATH,别套脚本用LD_LIBRARY_PATH(属于临时解决方法,发布软件不应该使用该方法)。编译的时候考虑是用 -Wl,-rpath='$ORIGIN/../lib'传递给 linker类似的方法,这样执行文件会在自己的相对路径去找so库文件。$ORIGIN指代的是真正的执行文件的位置,所以即使软链接到别的地方也没问 题,而用LD_LIBRARY_PATH环境变量则不行。用ldd查看可以看到效果。

4 - 其实也可以是用patchelf来hack已编译好的执行文件的RPATH,记得so库之间有互相依赖的话也要改。

5 - 系统的库如libc或libm是没什么必要也打包的。