LINUX.ORG.RU

компилирование бинарников


0

1

Есть машина с x86_64 архитектурой. Нужно собрать бинарник ( например midnight commander ) под другой машиной с такой же архитектурой ( но другой версией linux ) с минимальными зависимостями ( т е чтобы все библиотеки которые используются программой были слинкованы в один бинарник ). Это возможно сделать через стандартные скрипты configure т и п ?

★★☆☆

Последнее исправление: SI (всего исправлений: 1)

Я, конечно, мог неправильно понять, но мне кажется, что это называется «статическая компиляция».

beresk_let ★★★★★
()

Это возможно сделать через стандартные скрипты configure т и п ?

автоматически нельзя.

придется сначала собрать с --enable-static и --disable-shared все зависимости (а они далеко не всегда подерживают статическую сборку), и проинсталлить их в отдельный префикс, типа такого «make DESTDIR=~/temp/build install». причем при сборке каждой очередной зависимости, которая сама имеет новые зависимости, нужно уже использовать DESTDIR для поиска уже собранных зависимостей (см. configure --help), и т.п. — т.е. рекурсивно.

после чего собрать mc точно так же.

со многими проектами это не работает вообще совсем никак, т.к. либо в проектах есть плагины, и собрать статически нельзя вообще (например, imlib2), либо разрабы вообще не проверяли это под линухом, а под вендой и макосью все собирают без автотулсов.

mc не пробовал.

зы: я свой проект так собираю, пришлось написать нечто вроде собственной системы сборки.

waker ★★★★★
()

Проще всего распарсить выход ldd и запихать в архив бинарник, либы и враппер(тут уж придётся написать самому, но он элементарный). Файл получится не один, но распространять всяко проще.

Правда если динамически подгружаются внешние либы - придётся тоже их как-то брать с собой.

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