如何静态链接复杂的程序

时间:2009-06-11 20:36:34

标签: linux static linker

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

./configure
make

编译。 prehpes它有点过于笼统,但我怎样才能使二进制静态链接?

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

4 个答案:

答案 0 :(得分:29)

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

 ./configure --enable-static
 make

如果这不起作用,您可以在via LDFLAGS中传递链接器标志,如下所示:

 ./configure LDFLAGS=-static

答案 1 :(得分:5)

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

答案 2 :(得分:2)

如果你无法编译静态二进制文件,我使用Statifier得到了很好的结果。

答案 3 :(得分:1)

我认为它正在使用gcc来编译一系列c程序,尽管你必须查看Makefile才能找到它。

如果是这样,你可以调整makefile中的gcc行来进行静态链接,虽然根据程序的结构,这可能是一个复杂的变化。看一下man gcc,看看这是怎么做的。

我很想知道你为什么要静态链接。您是否考虑过使用预链接?

如果所有组件都不是GPL,您应该知道可能存在许可问题。