LINUX.ORG.RU

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

 ,


0

1

Есть аппликуха пользующая libz. в системе установлена libz версии 1.2.3.4 но для аппликухи требуется последняя. Вот я и думаю как покрасивее подсунуть моей аппликухе правильную libz чтобы остальные ничего не заметили.

аппликуху я собираю сам поэтому магия с LD_PRELOAD не интересна

PS: аппликуху предполагается компилить не только мне и поэтому хотелось бы какоето интуитивно-понятное решение. вариант привязатся к путям для правильной либы не есть приемлемо ибо у остального народу компилящего сию аппликуху пути наверняка будут другими.

★★★★★

Последнее исправление: cvv (всего исправлений: 2)
Ответ на: комментарий от GateKeeper

В таком случае я неверно не до конца четко сформулировал свой вопрос но не уверен в каком именно месте

cvv ★★★★★
() автор топика

Собери либу статикой и линкуйся со своей аппликухой. И либу уже никуда не надо кидать.

false ★★★★★
()
Ответ на: комментарий от false

Хорошо, а куда ее положить чтобы другой возжелавший перекомпилить мою аппликуху интуитивно положил ее в тоже самое место?

cvv ★★★★★
() автор топика

Покачто принял решение рядом с основной либой ложить libz-x.x.x.a и libz-x.x.x.so

надеюсь libz не сильно будет сопротивлятся такому раскладу.

cvv ★★★★★
() автор топика

Общепринятый способ:

1) устанавливать libz так: /usr/lib/libz.so.1.2.3
2) при компиляции искать полный путь до libz нужной версии с помощью вашей любимой системы сборки (autotools, cmake - умеют)
3) добавить найденный путь в команду линковки

http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

Секция «3.5. Installing and Using a Shared Library».
Почитайте про ldconfig.

gv
()
Ответ на: комментарий от gv

А для статических библиотек, AFAIK, стандарта нет — используют libz-1.2.a либо, libz1.2.a.

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