URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5167
[ Назад ]

Исходное сообщение
"есть ли общий способ собрать пакет статически"

Отправлено resu , 22-Фев-06 18:51 
есть ли общий способ собрать пакет статически,
или еще лучше любому динамически собранному файлу сказать, чтоб он пособирал все необходимые ему библиотеки в один файл.
а то что ни пакет так новые заморочки:
- у одних достаточно: LDFLAGS="-static",  как об етом говорит ld --help
- другим надо в  libtool разковырать строки -mode=link -static
- а с третьими вовсе наверно не катит как тут:
http://www.opennet.ru/openforum/vsluhforumID9/3949.html

вот что делать когда ну надо и все!!!???


Содержание

Сообщения в этом обсуждении
"есть ли общий способ собрать пакет статически"
Отправлено vt , 23-Фев-06 10:43 
>вот что делать когда ну надо и все!!!???
Есть один уникальный дистрибутив
Bent Linux: small simple distro, statically linked against uClibc
http://bent.latency.net/bent/
Можно посмотреть как автор это собирает,
а можно просто взять готовые пакеты


"есть ли общий способ собрать пакет статически"
Отправлено Wulf , 23-Фев-06 18:00 

>вот что делать когда ну надо и все!!!???

еще можно сделать "финт ушами" - удалить динамические версии либ перед линковкой.


"есть ли общий способ собрать пакет статически"
Отправлено resu , 23-Фев-06 19:09 
> Есть один уникальный дистрибутив
> Bent Linux: small simple distro, statically linked against uClibc <http://bent.latency.net/bent>/
> Можно посмотреть как автор это собирает,

спасибо, про этот дистри я не знал.
посмотрел пару пакетов, но там было: LDFLAGS="-static"
а такое у меня прокатило далеко не со всеми пакетами. я еще эту тему поковыряю.

> еще можно сделать "финт ушами" - удалить динамические версии либ перед линковкой.

я думаю не перед линковкой, а перед configure, но это не выход, т.к. они нужны для других программ


а вот если бы можно было как-то пересобрать
готовый динамически слинкованый бинарник в новый статически слинкованый. вот это бы решило много проблемм.


"есть ли общий способ собрать пакет статически"
Отправлено Аноним , 24-Фев-06 13:55 
>> еще можно сделать "финт ушами" - удалить динамические версии либ перед линковкой.
>
>я думаю не перед линковкой, а перед configure, но это не выход,
>т.к. они нужны для других программ
можно поступить творчески и просто переименовать их на время компиляции, а не совсем удалять :-)
В любом случае существует 2 способа:
1. подсунуть линковщику нужную опцию (-static для гнутых ld и cc) - требует ковыряния Makefile - что вам не понравилось.
2. Временно удалить некошерные версии библиотек. Вам тоже не понравилось.
Вам не угодишь :-)
>
>а вот если бы можно было как-то пересобрать
>готовый динамически слинкованый бинарник в новый статически слинкованый. вот это бы решило
>много проблемм.

Пересобирать - бессмысленно. Статические и динамические библиотеки компилируются с разными опциями (-FPIC), из-за этого такой процесс совершается с ними дважды, отдельно для статических и отдельно для динамических. Лучше поместить прогу с либами в отдельный каталог и для запуска использовать простейший shell-wrapper, который будет устанавливать LD_LIBRARY_PATH на нужную директорию с правильными либами.


"есть ли общий способ собрать пакет статически"
Отправлено Wulf , 24-Фев-06 14:05 
Вредно постить непохмеленным. Анонимом, почему-то, становишся. Наверное, от этого куки в браузере дезинтегрируются.

"есть ли общий способ собрать пакет статически"
Отправлено Resu , 24-Фев-06 18:50 
>Вредно постить непохмеленным.
в любом случае спасибо

>Пересобирать - бессмысленно. Статические и динамические библиотеки
>компилируются с разными опциями (-FPIC), из-за этого такой процесс
>совершается с ними дважды, отдельно для статических и отдельно для
>динамических.

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

>Лучше поместить прогу с либами в отдельный каталог и для
>запуска использовать простейший shell-wrapper, который будет устанавливать
>LD_LIBRARY_PATH на нужную директорию с правильными либами.

пока что так и решил (точнее обошел) проблему, но как вы сказали: мне не угодишь.
просто хотел сделать лучше чем "как всегда".

ну а если по сути, то дело не в ковырянии файлов, а в отсутствии стандартного подхода по решению задачи (точнее не знании мной оного).
мне (возможно по незнанию) приходиться ковырять то Makefile то libtool, кому достаточно сказать LDFLAGS=-static перед configure, кому етого мало, а с иными проектами вообще никак не получается.

а было бы здорово если бы наряду со strip был бы некий инструмент
relink --static