LINUX.ORG.RU

Версии динамических библиотек


0

0

При компиляции динамических создаются файлы .so.версия и символическая ссылка на них с именем .so. При этом при сборке приложения оно реально цепляется за .so.версия. Возникла необходимость распространять бинарную версию приложения, используещего GTK так, чтобы оно не зависило от версий динамических библиотек - как это сделать?

★★

Программа не может не зависеть от версии библиотек.
У библиотек с разным номеров версии разный ABI (Application Binary Interface).
Когда программа линкуется, то она линкуется с конкретным ABI, т.е. с конкретной версией динамической библотеки.
Если подсунуть программе другую версию библиотеки (не ту с которой она слинкована), то дело скорее всего закончится тем, что во время загрузки исполняемого модуля программы в память не будут найдены некоторые символы, а если и будут найдены, то скорее всего будет core dumped.

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

Согласен, но не до конца. GTK приложение, написанное для GTK 2.x должно работать (и работает) везде (проверено установкой symlink'ов). Но при сборке мое приложение привязывается к libiconv.so.3 (точно не помню) и при переносе на другую версию FreeBSD не работает, хотя функций из libiconv не использует вообще (ее использует GTK). Соответственно даже при использовании GTK одной версии у меня не запускается приложение в FreeBSD той же версии с другой версией iconv.

В Windows работает с GTK-2.6, GTK-2.8, ...

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