Linux посмотреть версию библиотеки

Просмотр информации о библиотеке Linux /исполняемой версии

В Windows, EXE и DLL есть информация о версии, включая по крайней мере следующие поля:

  1. версия файла
  2. версия продукта
  3. внутреннее имя
  4. название продукта
  5. авторские права

В библиотеке Linux /Исполняемый файл:

  • Какие поля присутствуют?
  • Как просмотреть такую ​​информацию?
  • Какие инструменты /библиотеки следует читать?

3 ответа

Информация о версии, явно не сохраненная в файле ELF. У вас есть имя библиотеки, soname , которая включает основную версию. Полная версия обычно хранится как часть имени файла библиотеки.

Если у вас есть библиотека, скажите libtest.so , тогда вы обычно имеете:

  • libtest.so.1.0.1 — сам файл библиотеки, содержащий полную версию
  • libtest.so.1 — Symlink на 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

Для систем на базе Redhat выполните следующее:

Проверьте файл необходимых пакетов, убедитесь, что в именах файлов библиотеки нет имен путей. Если удалите их, значит, «/bin/lib/libx.so.1» изменится на «libx.so.1»

Узнайте, какой пакет содержит библиотеку

Или поместите это в скрипт или запустите из строки cmd:

Затем создайте следующий сценарий или запустите из строки cmd:

Вы закончили, запустите свою программу. Если при запуске возникают ошибки GUI. Скопируйте их и если они являются ссылками на библиотеки, найдите пакеты для них и установите их таким же образом.

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума

Общий порядок компиляции + как узнать версию библиотеки

Общий порядок компиляции + как узнать версию библиотеки

Сообщение bdimych » 11.02.2007 23:40

MOPSLinux 5 = Slackware 11

Я начинающий но уже продвинутый. Не могу сообразить принципы стандартной сборки приложения linux.

Читайте также:  Windows nfs mount error 53

Вопросы возникли при попытках сборки vlc player. Это здоровенный можно сказать мультимедийный фрэймворк. Чтобы его собрать нужно

30 других пакетов которые и между собой тоже связаны. Там есть автоматизация сборки всех нужных пакетов, но с первого раза не получилось. Процесс несколько раз стопорился и в каждом случае приходилось вручную разбираться с несобирающимся пакетом. И когда он наконец таки собрался, заработал тоже не сразу. Пришлось пересобирать несколько раз а на каждую пересборку не меньше 40 минут уходило. Я злился!

Не могу сообразить порядок вообще т.е.
1. autotools делают файлы Makefile и configure
2. gcc и g++ собирает файлы «o» из файлов c/cpp + h/hpp
3. . собирает из нескольких «o» файл «a»
4. . из «a» делает файл «so»

Статическая сборка — это включение кусков кода из одного «o» в другой ?

Где определяется что программа будет не статической а использовать «so» и какие ? Т.е. например пакет ffmpeg у меня уже есть в /usr/local. Сборочный скрипт vlc качает ffmpeg в свой подкаталог и как быть уверенным что при сборке будет использоваться именно скаченная версия

Что делает ldconfig? Т.е. не может ли он тоже повлиять на то какая версия ffmpeg будет использоваться. Ведь ldconfig при каждой загрузке запускается и что то связывает.

Как узнать версию файла «a» или «so» и вообще понятие версия библиотеки в линуксе что означает. Я виндузятник поэтому о версии представление такое — «правой кнопкой — свойства файла». Пробовал readelf но он выдает нечто большое которое явно не совпадает просто с цифрой в имени файла после «so». Эта цифра как я понимаю и есть версия? Но внутри файла версии нет что ли ? А у файлов «a» где тогда версия ?

я примерно знаю что надо читать: elf + libtool + ld + ldconfig + флаги -L -I -l но как говорил Киса Воробьянинов хочется чтобы побыстрее Если не трудно объясните пожалуйста в двух словах.

Источник

Linux посмотреть версию библиотеки

Здравствуйте, opener, Вы писали:

O>Знатоки, подскажите, какой командой можно получить информацию о версии установленной в системе .so-шки?

Посмотреть, какому пакету принадлежит эта .so-шка и посмотреть версию пакета. Какими командами — зависит от дистрибутива.
Еще .so-шки зачастую являются симлинками на файлы, по имени совпадающими с .so-шкой, но с версией в конце.

От: opener
Дата: 23.05.13 12:58
Оценка:

Здравствуйте, ДимДимыч, Вы писали:

ДД>Здравствуйте, opener, Вы писали:

O>>Знатоки, подскажите, какой командой можно получить информацию о версии установленной в системе .so-шки?

ДД>Посмотреть, какому пакету принадлежит эта .so-шка и посмотреть версию пакета.

Ну вот лежит у меня в системе libxml2.so
Как узнать, из какого пакета она была установлена?

ДД>Какими командами — зависит от дистрибутива.

От: ДимДимыч http://klug.org.ua
Дата: 23.05.13 13:11
Оценка: 2 (1)

Здравствуйте, opener, Вы писали:

O>Ну вот лежит у меня в системе libxml2.so
O>Как узнать, из какого пакета она была установлена?
O>Linux RedHat

Если это файл, а не симлинк, то

Если симлинк, то глянуть, на какой файл он смотрит. В моей системе, например:

Читайте также:  Антон баитов активация windows 10
От: zaufi
Дата: 23.05.13 15:49
Оценка:

Здравствуйте, ДимДимыч, Вы писали:

ДД>Здравствуйте, opener, Вы писали:

O>>Ну вот лежит у меня в системе libxml2.so
O>>Как узнать, из какого пакета она была установлена?
O>>Linux RedHat

ДД>Если это файл, а не симлинк, то
ДД>

ДД>Если симлинк, то глянуть, на какой файл он смотрит. В моей системе, например:
ДД>

ДД>Версия 2.9.1.

стоит однако заметить, что не всегда эти циферки значат «версия пакета». не берусь сказать насколько «далеко» не всегда, в частности идеология используемая libtool’ом приводит к тому, что эти циферки практически никак не связаны с версией пакета (и даже API библы), а только лишь с количеством «интерфейсов» (и изменений) предоставляемых библой (т.е. ABI, которое не равно версии API). почитать можно здесь и здесь. и, насколько я помню, эта схема уходит корнями в солярис — просто была чуть допилена.

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

Источник

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Управление библиотеками в Linux

Когда библиотекарь — пингвин

4 минуты чтения

В данной статье мы посмотрим, что такое статические и динамические библиотеки. Местоположение библиотек по умолчанию. Определение используемых библиотек. Загрузка библиотек.

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Библиотеки это набор функций, которые могут использоваться в различных программах. Библиотеки могут быть статические (библиотека привязывается к определенной программе или софт содержит данную библиотеку в своем теле.) и динамическими (библиотеки грузятся в оперативную память и используются). Плюсы первого варианта нет проблемы совместимости, т. к. софт уже в себе содержит библиотеку, библиотека всегда с собой. Но при этом программы становятся большие по размеры и т.к каждая может загружать свои библиотеки, а иногда и одинаковые. Второй вариант значительно лучше, сами программы по своему размеру меньше. Библиотека загружается один раз в оперативку. И следующая программа, которой необходимы такие же функции, берет и использует эти данные.

По умолчанию библиотеки в Linux находятся в двух папках. Это корневая папка /lib в ней находятся библиотеки, которые используют программы, расположенные в корневой папке /bin.

И есть вторая папка /usr/lib. В ней находятся библиотеки, которые используют программы расположенные /usr/bin. Пути к библиотекам указаны файле /etc/ld.so.conf. Данный файл можно просмотреть стандартным способом, через утилиту cat.

Читайте также:  Как установить pc wireless gaming receiver windows 10

Видим, что написано включить все библиотеки, которые расположены по пути, указанном в файле. Те которые оканчиваются на .conf. Он просто включает в себя все настройки, которые находятся в конфигурационных файлах, в данной директории. Переходим в данную директорию.

В данной директории мы можем видеть 2 файла конфигурации, в зависимости от версии и наполнения операционной системы их может быть и больше. Ну и соответственно в конфигурационных файлах находятся пути к директориям, где лежат необходимые для работы библиотеки. Если мы ставим какое, то свое программное обеспечение, которому необходимы дополнительные библиотеки, не идущие в составе дистрибутива linux, то в данной директории может создаться свой конфигурационный файл. Например: если мы используем систему виртуализации VMware, то к каждой VM устанавливаем VMware tools то данное программное обеспечение создаст свой конфигурационный файл с путями для своих библиотек.

Переходим в директорию cd /etc/ и отсортируем так, чтобы в результатах все, что содержит ld.

Видим 3 основных конфигурационных файла. ld.so.conf — это файл конфигурации в котором написано откуда брать дополнительные библиотеки. Директория ls.so.conf.d в которой находятся дополнительные конфигурационные файлы и ld.so.cache это кэш библиотек. Он у нас выстраивается каждый раз для того, чтобы программы при необходимости при запросе библиотек не копались в файлах, а сразу брали из загруженного в оперативную память кэша. Т.е. если мы вносим какие-то изменения в файл конфигурации, добавляем какие-то конфигурационные файлы нам необходимо обновить этот кэш. Кэш обновляется командой ldconfig. Этого, собственно, достаточно, чтобы прогрузить все библиотеки в кэш.

Давайте посмотрим, как, определить какими библиотеками пользуется какая программа.

Для этого мы будем использовать команду ldd и путь к бинарному файлу. Например: Программа ls которая используется для вывода списка файлов в каталоге. Она находится в каталоге /bin/ls.

В результате получим мы следующее:

Мы видим, какие so использует данная программа и соответственно ссылки на них, где они расположены, собственно, so — это наши библиотеки в данном случае.

Возможно добавление библиотек вручную, это может потребоваться если мы ставим совершенно стороннее программное обеспечение, которое очень трудно взаимодействует с Linux или устаревшее. Т.е. которое само не может создать конфигурационный файл и разнести библиотеки в системные директории Linux. Если мы хотим сделать это вручную, тогда нам необходим тот самый файл /etc/ld.so.conf. В данный файл мы можем дописать путь к файлу конфигурации библиотек тех, которые нам нужны. Либо есть более легкий вариант с использованием переменной export LD_LIBRARY_PATH и указать путь к тем особенным библиотекам, которые будет использовать наша «особенная» программа. Обычно все стороннее программное обеспечение устанавливается в папку /opt. Итоговый вариант будет выглядеть как: export LD_LIBRARY_PATH=/opt/soft/lib и когда пройдет экспорт, у нас попробует погрузится из этого пути библиотека, но перед этим необходимо не забыть сделать ldconfig.

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Источник

Оцените статью