Динамическая линковка в Unix

yamushev

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

Vl4dimir

Имя

yamushev

А ты немногословен
Спасибо.

Hottab

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

yamushev

Так в том-то и штука. Если имена функций остаются теми же (а так и бывает, если новая версия отличается от старой на цифру после второй точки, например 2.1.2 после 2.1.1 то зачем все перекомпилять?

sergey_m

символьная ссылка, иначе такую библиотеку тяжело было бы назвать динамической

yamushev

Значит, все-таки можно апргейдить библиотеку на более позднюю версию без перекомпиляции всего софта, который ее прилинковывает?

Vl4dimir

Бывает так, что имена функций немного меняются от версии к версии (особеноо в c++).
Так что переделывать бывает необходимо.

ser1963

Сделай objdump -T на свой бинарник, увидишь требуемые версии. Этой информации должно хватить для определения возможности обмана путём символических ссылок.

Vl4dimir

А если их пара сотен на каждую библиотеку?
Проще использовать метод тыка - линкер сам подскажет.

yamushev

DLL Hell. Version for Unix
Короче, я на это забил. Легче обновлять одним махом все раз в полгода.
Оставить комментарий
Имя или ник:
Комментарий: