将共享库编译成程序?
我写了一个程序,它使用我系统上安装的共享库。 该库很少安装在其他系统上。 如何编译我的程序,以便不需要在其他系统上安装库? 我有可用的库的源代码。 什么是最好的方式?
其他系统当然具有相同的架构和操作系统。
将其编译为静态库并将其链接到可执行文件中。
虽然OP通过回答不同的问题解决了他的问题,但是(至少)有两种方法可以将共享库楔入你的二进制文件中
- 没有可用的源代码
- 没有可用的编译器(或构建链)
- 静态链接不起作用或者它不明显是怎么做的
- 保留内存布局 – 静态链接将改变它,并可能“唤醒”隐藏的错误
- 用于“永久链接”LD_PRELOAD库转换为可执行文件
第一个是statifier(开源但仅限于x86和x86_64,只有目标代码)
我知道的第二个是魔法貂(由同一个开发人员)。 它是封闭源代码,但开发人员对开源项目很友好,而ermine具有支持更多平台的优势,以及在其虚拟文件系统中包含所有必要数据文件的能力。
http://statifier.sourceforge.net/和http://www.magicermine.com/