编译共享库到程序中?

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

其他系统当然有相同的体系结构和操作系统。

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

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

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

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

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

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