如何静态链接一个复杂的程序

在Linux中,下载了一个程序源,并希望它是静态链接的。 我有一个巨大的Makefile

./configure make 

编译。 prehpes这是有点太笼统不问,但我怎样才能使二进制静态链接? 谢谢。

编辑:这样做的原因是要确保二进制文件没有依赖关系(或者至less尽可能less),使得可以在任何基于Linux的计算机上运行,​​即使没有互联网连接,也没有更新的Linux。

大多数autoconf生成的configure脚本将允许您进行静态构建:

  ./configure --enable-static make 

如果这不起作用,您可以通过LDFLAGS传递链接器标记,如下所示:

  ./configure LDFLAGS=-static 

是的,你需要编辑make文件,并在链接期间添加-static参数给gcc。

如果你不能编译一个静态的二进制文件,我用Statifier已经有了很好的结果。

我假设它使用gcc来编译一系列c程序,但是你必须在Makefile中查找。

如果是这样的话,可以调整makefile中的gcc行来进行静态链接,尽管取决于程序的结构,这可能是一个复杂的变化。 看看man gcc看看这是怎么完成的。

我有兴趣知道为什么你是静态链接。 你有没有考虑使用prelinking?

您应该知道,如果所有组件都不是GPL,则可能会出现许可证问题。