Вот что интересно (может быть, вопрос совсем глупый, прошу сильно не пинать, если так): какие правила линковки к shared library, если на нее есть некоторое количество симлинков? Например, в RH8 есть такие файлы: /usr/lib/libz.so -> /usr/lib/libz.so.1.2.1.1 /usr/lib/libz.so.1 -> /usr/lib/libz.so.1.2.1.1 /usr/lib/libz.so.1.2.1.1 Спрашивается, что пропишется в executable, рожденный gcc-ом с подключеной libz? Проверка: ====ztest.c==== int main() {return 0;} ============== $ gcc ztest.c -o ztest -lz $ ldd ./ztest libz.so.1 => /usr/lib/libz.so.1 (0x00726000) libc.so.6 => /lib/tls/libc.so.6 (0x005de000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x005c5000) objdump показываетс, что в секции NEEDED действительно прописано "libz.so.1". Почему именно ".so.1"? В новых дистрибах появилась новая версия libz (1.2.1, насколько я понимаю). Появляется симлинк libz.so.2, и пропадает симлинк libz.so. Так что если программа залинкована на libz.so, то скорее всего работать она не будет. Опять же: как будет использоваться эта libz.so.2, если со старых программ на нее нет ссылки? Или libz.so.1=> libz.so.2? Так вот вопрос: как компилятор опереляет, к какому симлинку линковать? Заранее большое спасибо за объяснения.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум skipping incompatible /usr/lib/libz.a when searching for -lz (2016)
- Форум Статическая сборка программ (2006)
- Форум Обновление мажорных версий (2020)
- Форум Проприетарная программа (2011)
- Форум Новая мажорная версия Luminance HDR (2012)
- Форум Линковка к мажорным версиям библиотек (Linking to common version of shared library) (2014)
- Форум В предверии мажорной версии релиза nEMU (2021)
- Форум Проблема с версиями .so (2009)
- Форум Симлинки (2012)
- Форум Симлинки (2001)