есть ли общий способ собрать пакет статически,
или еще лучше любому динамически собранному файлу сказать, чтоб он пособирал все необходимые ему библиотеки в один файл.
а то что ни пакет так новые заморочки:
- у одних достаточно: LDFLAGS="-static", как об етом говорит ld --help
- другим надо в libtool разковырать строки -mode=link -static
- а с третьими вовсе наверно не катит как тут:
http://www.opennet.me/openforum/vsluhforumID9/3949.htmlвот что делать когда ну надо и все!!!???
>вот что делать когда ну надо и все!!!???
Есть один уникальный дистрибутив
Bent Linux: small simple distro, statically linked against uClibc
http://bent.latency.net/bent/
Можно посмотреть как автор это собирает,
а можно просто взять готовые пакеты
>вот что делать когда ну надо и все!!!???еще можно сделать "финт ушами" - удалить динамические версии либ перед линковкой.
> Есть один уникальный дистрибутив
> Bent Linux: small simple distro, statically linked against uClibc <http://bent.latency.net/bent>/
> Можно посмотреть как автор это собирает,спасибо, про этот дистри я не знал.
посмотрел пару пакетов, но там было: LDFLAGS="-static"
а такое у меня прокатило далеко не со всеми пакетами. я еще эту тему поковыряю.> еще можно сделать "финт ушами" - удалить динамические версии либ перед линковкой.
я думаю не перед линковкой, а перед configure, но это не выход, т.к. они нужны для других программ
а вот если бы можно было как-то пересобрать
готовый динамически слинкованый бинарник в новый статически слинкованый. вот это бы решило много проблемм.
>> еще можно сделать "финт ушами" - удалить динамические версии либ перед линковкой.
>
>я думаю не перед линковкой, а перед configure, но это не выход,
>т.к. они нужны для других программ
можно поступить творчески и просто переименовать их на время компиляции, а не совсем удалять :-)
В любом случае существует 2 способа:
1. подсунуть линковщику нужную опцию (-static для гнутых ld и cc) - требует ковыряния Makefile - что вам не понравилось.
2. Временно удалить некошерные версии библиотек. Вам тоже не понравилось.
Вам не угодишь :-)
>
>а вот если бы можно было как-то пересобрать
>готовый динамически слинкованый бинарник в новый статически слинкованый. вот это бы решило
>много проблемм.Пересобирать - бессмысленно. Статические и динамические библиотеки компилируются с разными опциями (-FPIC), из-за этого такой процесс совершается с ними дважды, отдельно для статических и отдельно для динамических. Лучше поместить прогу с либами в отдельный каталог и для запуска использовать простейший shell-wrapper, который будет устанавливать LD_LIBRARY_PATH на нужную директорию с правильными либами.
Вредно постить непохмеленным. Анонимом, почему-то, становишся. Наверное, от этого куки в браузере дезинтегрируются.
>Вредно постить непохмеленным.
в любом случае спасибо>Пересобирать - бессмысленно. Статические и динамические библиотеки
>компилируются с разными опциями (-FPIC), из-за этого такой процесс
>совершается с ними дважды, отдельно для статических и отдельно для
>динамических.а вот етого я не знал. думал, что компилятор всегда переводит .c в абсолютно стандартный .о, a вот линковщик (в зависимости от опций) подлкючает статику или динамику. спасибо
>Лучше поместить прогу с либами в отдельный каталог и для
>запуска использовать простейший shell-wrapper, который будет устанавливать
>LD_LIBRARY_PATH на нужную директорию с правильными либами.пока что так и решил (точнее обошел) проблему, но как вы сказали: мне не угодишь.
просто хотел сделать лучше чем "как всегда".ну а если по сути, то дело не в ковырянии файлов, а в отсутствии стандартного подхода по решению задачи (точнее не знании мной оного).
мне (возможно по незнанию) приходиться ковырять то Makefile то libtool, кому достаточно сказать LDFLAGS=-static перед configure, кому етого мало, а с иными проектами вообще никак не получается.а было бы здорово если бы наряду со strip был бы некий инструмент
relink --static