在Linux中,下载了一个程序源并希望它是静态链接的。 那里有一个巨大的Makefile, 我
./configure
make
编译。 prehpes它有点过于笼统,但我怎样才能使二进制静态链接?
编辑:原因是想要确保二进制文件 没有依赖关系(或至少尽可能少),使得可以在任何基于Linux的计算机上运行,即使没有Internet连接的计算机,也可以在未更新的Linux上运行。答案 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,您应该知道可能存在许可问题。