2013-07-27 3 views
1

Это более общий вопрос. Я знаю, что Windows DLL может иметь файл ресурсов, настроенный с информацией о версии dll, но мне интересно, как сделать то же самое для общих объектов linux.Включить номер версии при компиляции общих объектов

Проблема, с которой я сталкиваюсь, на самом деле при запуске практически ничего на терминале, я получаю сообщение о том, что информация о версии libz.so.1 недоступна. Это связано с тем, что приложение присутствует со своей версией libz, которую я скомпилировал. Библиотека фактически является libz.so.1.2.3, и такая же версия существует в/lib. Файлы на самом деле являются ТОЛЬКО ИМЕЮЩЕЙСЯ версией библиотеки, но один из них (который я компилировал) говорит о том, что отсутствует информация о версии.

Итак, это заставляет меня задаться вопросом, как фактически включать информацию о версии в двоичный файл, а не только в имя файла. Было бы идеально, если есть решение, как

./configure .... some_version_option=1.2.3 

Если я использую рабочую версию библиотеки:

ldd /usr/bin/git 
linux-vdso.so.1 => (0x00007fffdfbff000) 
libz.so.1 => /lib64/libz.so.1 (0x00007f3797fa7000) 
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003c56000000) 
libc.so.6 => /lib64/libc.so.6 (0x0000003c55c00000) 
/lib64/ld-linux-x86-64.so.2 (0x0000003c55400000) 

Если я использую версию я скомпилированный:

ldd /usr/bin/git 
/usr/bin/git: libz.so.1: no version information available (required by /usr/bin/git) 
linux-vdso.so.1 => (0x00007fff872b1000) 
libz.so.1 (0x00007f83c9270000) 
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003c56000000) 
libc.so.6 => /lib64/libc.so.6 (0x0000003c55c00000) 
/lib64/ld-linux-x86-64.so.2 (0x0000003c55400000) 
+0

Какая ошибка вы видите? Каков вывод команды 'ldd./Application', где программа - это любая программа, которая дает вам ошибку. – osgx

ответ

0

Вам нужно для передачи файла карты версии библиотеки библиотеки с -Wl,--version-script <file.map>. Файл карты должен быть включен в источник библиотеки.

+0

Спасибо! Я должен бежать на данный момент, но завтра перекомпилирую и посмотрю, как это происходит. – thatthatisis

+0

SOOOO оценен. Вы ответили на общий вопрос (который, я надеюсь, тоже поможет другим) И привел меня к разной версии источника zlib для версий 1.2.3.x. ./configure для 1.2.3 не включает zlib.map для Linux-систем, но 1.2.3.x. – thatthatisis