将共享库编译成程序?

时间:2011-08-01 15:54:06

标签: c linux gcc shared-libraries

我写了一个程序,它使用我系统上安装的共享库。该库很少安装在其他系统上。如何编译我的程序,以便不需要在其他系统上安装库?我有可用的库的源代码。什么是最好的方式?

其他系统当然具有相同的架构和操作系统。

2 个答案:

答案 0 :(得分:3)

将其编译为静态库并将其链接到可执行文件中。

答案 1 :(得分:1)

虽然OP通过回答不同的问题解决了他的问题,但是(至少)有两种方法可以将共享库楔入你的二进制文件中

  • 没有可用的源代码
  • 没有可用的编译器(或构建链)
  • 静态链接不起作用或者它不明显是怎么做的
  • 保留内存布局 - 静态链接会改变它并可能“唤醒”隐藏的错误
  • 将“永久链接”LD_PRELOAD库转换为可执行文件

第一个是statifier(开源但仅限于x86和x86_64,只有目标代码)

我知道的第二个是魔法貂(由同一个开发人员)。它是封闭源代码,但开发人员对开源项目很友好,而ermine具有支持更多平台的优势,以及在其虚拟文件系统中包含所有必要数据文件的能力。

http://statifier.sourceforge.net/http://www.magicermine.com/