В Windows EXE и DLL имеют информацию о версии, включая, по крайней мере, следующие поля:
- версия файла
- версия продукта
- внутреннее имя
- наименование товара
- авторское право
В Linux Library / Исполняемый файл:
- Какие поля присутствуют?
- Как просмотреть такую информацию?
- Какие инструменты / библиотеки читать?
executable
libraries
version
linquize
источник
источник
/sbin/ldconfig -p
Ответы:
Информация о версии явно не сохраняется в файле ELF . У вас есть название библиотеки, в
soname
которую входит основная версия. Полная версия обычно хранится как часть имени файла библиотеки.Если у вас есть, скажем
libtest.so
, библиотека , то у вас обычно есть:libtest.so.1.0.1
- сам файл библиотеки, содержащий полную версиюlibtest.so.1
- Ссылка наlibtest.so.1.0.1
, имеющая то же имя, что иsoname
libtest.so
- Симлинк,libtest.so.1
используемый для ссылки.В файле библиотеки
libtest.so.1.0.1
будетSONAME
динамическая секция, которая будет называть эту библиотеку вызываемойlibtest.so.1
. Когда вы связываете программу с этой библиотекой, связанная программа будет хранить входящуюsoname
библиотекуNEEDED
в динамическом разделе.Если вы хотите проверить, что именно находится в ELF-файле, вы можете попробовать запустить:
где
elffile
может быть библиотека исполняемого файла.Если вы просто хотите получить версию библиотеки, вы можете поиграть с:
AFAIK, такой информации нет (по крайней мере, по умолчанию) в исполняемых файлах.
Или вы можете положиться на саму программу или свою систему упаковки, как писал Рахул Патил.
источник
Вы можете использовать
ldconfig -v | grep libraryname
, также команда имеет опциюcommand -V
илиbinaryfile --version
пример :
также вы можете использовать yum или aptitude в зависимости от используемого вами дистрибутива, например.
в RHEL5 / CENTOS5 / Fedora вы можете использовать
yum info packagename
или, если он установлен, используйтеrpm --version packagename
В Ubuntu Вы можете использовать
aptitude show pkgname
илиdpkg --version pkgname
источник
rpm
, я думаю , что вы хотитеrpm --query pkgname
перечислить строку версии (rpm --version
напечатает версиюrpm
себя, то же самое может быть верно дляdpkg
)Для систем на базе Redhat сделайте это:
Проверьте файл Нужных пакетов, убедитесь, что в именах файлов библиотеки отсутствуют пути. Если это так, удалите их, поэтому «/bin/lib/libx.so.1» измените на «libx.so.1»
Узнайте, какой пакет содержит библиотеку
Или поместите это в скрипт или запустите из строки cmd:
Затем создайте следующий скрипт или запустите из строки cmd:
Вы сделали, запустите вашу программу. Если вы получаете ошибки GUI при запуске. Скопируйте их, и, если они являются ссылками на библиотеки, найдите пакеты для них и установите таким же образом.
источник
Запустите это, чтобы получить информацию о версии -
strings libssl.so.1.0.0 | grep "1\.0"
источник