How to statically-link a complex program

夙愿已清 提交于 2019-12-29 14:16:14

问题


In Linux, downloaded a program source and want it to be statically linked. Have a huge Makefile there, I

./configure
make

to compile. prehpes it's a bit too general to ask, but how can I make the binary statically linked?

EDIT: the reason for this is wanting to make sure the binary will have no dependencies (or at least as few as possible), making it possible to run on any Linux based computer, even one without Internet connection, and non-updated Linux.


回答1:


Most autoconf generated configure script will allow you to make a static build:

 ./configure --enable-static
 make

If that doesn't work, you may be able to pass linker flags in via LDFLAGS, like this:

 ./configure LDFLAGS=-static



回答2:


Yeah, you need to edit the make file and add the -static parameter to gcc during the link.




回答3:


If you cannot compile a static binary, I've had good results using Statifier.




回答4:


I assume it's using gcc to compile a series of c programs, although you will have to look in the Makefile to find out.

If so, you can adjust the gcc lines in the makefile to do static linking, although depending upon the structure of the program, this may be a complex change. Take a look at man gcc to see how this is done.

I'd be interested to know why you are statically linking. Have you considered using prelinking instead?

You should be aware that there may be licence problems to doing this if all components are not GPL.



来源:https://stackoverflow.com/questions/983515/how-to-statically-link-a-complex-program

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!