将共享库编译成程序?

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

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

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

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

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

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

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

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