LINUX.ORG.RU
ФорумAdmin

Статическая компиляция.

 


0

2

Есть некая программа, которая собирается через cmake и make. Там где мне нужно её запустить, в Debian, многие библиотеки более старых версий. Программа компилируется на Ubuntu, где есть нужные библиотеки. Как мне скомпилировать программу, что бы она включала в себя все необходимые библиотеки? Можно ли как-то выборочно указать какие библиотеки собрать статически, какие нет?


-Wl,-rpath=/opt/crap

anonymous
()

Чтобы прямо всё-всё, вместе с иксами (если программа графическая) и glibc-рантаймом, то gcc --static

Можно ли как-то выборочно указать какие библиотеки собрать статически, какие нет?

Да:

gcc -o app app.o -L/path/to/lib -ldynamic_library /path/to/lib/libstatic_library.a

EXL ★★★★★
()

make выполняет ну очень много команд c++, всё правильно поправить я не смогу. Может есть способ указать какой-нибудь env перед запуском make, что бы хотя бы полностью всё в static было.

Viper
() автор топика
Последнее исправление: Viper (всего исправлений: 1)
Ответ на: комментарий от EXL

Спасибо, видно не судьба мне так сделать. Начинаются ошибки типа: requires dynamic R_X86_64_PC32 reloc against 'memcmp' which may overflow at runtime; recompile with -fPIC. Добавлял я этот флаг, всё то же самое.

Viper
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.