Как статически связать сложную программу

В Linux скачали исходный код программы и хотите, чтобы он был статически связан. У меня есть огромный Makefile, я

./configure
make

Скомпилировать. это слишком общий вопрос, чтобы спросить, но как я могу сделать двоичный файл статически связанным?

РЕДАКТИРОВАТЬ: причина этого заключается в том, что необходимо убедиться, что двоичный файл не будет иметь зависимостей (или, по крайней мере, как можно меньше), что позволяет запускать его на любом компьютере под управлением Linux, даже на компьютере без подключения к Интернету, и на не обновленном Linux.

Ответы

Ответ 1

Большинство autoconf сгенерированных configure script позволят вам создать статическую сборку:

 ./configure --enable-static
 make

Если это не сработает, вы можете передать флаги компоновщика через LDFLAGS, например:

 ./configure LDFLAGS=-static

Ответ 2

Да, вам нужно отредактировать файл make и добавить параметр -static в gcc во время ссылки.

Ответ 3

Если вы не можете скомпилировать статический двоичный файл, у меня были хорошие результаты, используя Statifier.

Ответ 4

Я предполагаю, что с помощью gcc скомпилировать серию программ c, хотя вам придется искать в Makefile, чтобы узнать.

Если это так, вы можете настроить gcc-строки в make файле для статической привязки, хотя в зависимости от структуры программы это может быть сложным изменением. Взгляните на man gcc, чтобы посмотреть, как это делается.

Мне было бы интересно узнать, почему вы статически связываетесь. Вы считали, что вместо этого используете предварительную привязку?

Вы должны знать, что могут возникнуть проблемы с лицензией, если все компоненты не являются GPL.