在Linux中,下载了一个程序源并希望它是静态链接的。 有一个巨大的Makefile那里, 我如何静态链接一个复杂的程序
./configure
make
编译。 012hprehpes这是有点过于笼统的问,但我怎样才能使二进制静态链接? 谢谢。
编辑:这是为了确保二进制将 没有依赖关系(或至少尽可能少),使任何Linux的计算机上运行,即使没有互联网连接,并非更新的Linux。
在Linux中,下载了一个程序源并希望它是静态链接的。 有一个巨大的Makefile那里, 我如何静态链接一个复杂的程序
./configure
make
编译。 012hprehpes这是有点过于笼统的问,但我怎样才能使二进制静态链接? 谢谢。
编辑:这是为了确保二进制将 没有依赖关系(或至少尽可能少),使任何Linux的计算机上运行,即使没有互联网连接,并非更新的Linux。
大多数autoconf
产生configure
脚本将让你做出一个静态编译:
./configure --enable-static
make
如果不工作,你可以通过LDFLAGS
通过连接标志中,就像这样:
./configure LDFLAGS=-static
非常好的答案,不幸的是两个都没有工作出于某种原因。 – 2009-06-13 20:06:35
从我的理解来看,这并不奏效,因为我缺乏静态库链接。 – 2009-06-21 18:20:25
是的,您需要编辑make文件并在链接期间向gcc添加-static参数。
我假设它使用gcc来编译一系列的c程序,但是你必须查看Makefile才能找到。
如果是这样,您可以调整makefile中的gcc行来进行静态链接,尽管取决于程序的结构,但这可能是一个复杂的变化。看看man gcc,看看这是如何完成的。
我很想知道你为什么静态链接。你有没有考虑过使用prelinking?
您应该知道,如果所有组件都不是GPL,则可能会出现许可证问题。
如果你不能编译一个静态二进制文件,我使用Statifier有很好的结果。
静态链接被认为是有害的! http://people.redhat.com/drepper/no_static_linking.html我很抱歉,这不是对您的问题的直接回答,但我只是想指出。 – 2009-06-11 20:39:44