В Windows EXE и DLL имеют информацию о версии, включая, по крайней мере, следующие поля:
- версия файла
- версия продукта
- внутреннее имя
- наименование товара
- авторское право
В Linux Library / Исполняемый файл:
- Какие поля присутствуют?
- Как просмотреть такую информацию?
- Какие инструменты / библиотеки читать?
Я обновил еще некоторые вещи, пожалуйста, проверьте сейчас ..
ldconfig нужен рут? Как насчет того, чтобы проверить определенный файл libxxx.so и не хотите запускать exe с —version (может произойти сбой)
root не нужен, так как / sbin / path не задан в обычной пользовательской среде, вы можете выполнить его, используя абсолютный путь, например. /sbin/ldconfig -p
Информация о версии явно не сохраняется в файле ELF . У вас есть название библиотеки, в soname которую входит основная версия. Полная версия обычно хранится как часть имени файла библиотеки.
Если у вас есть, скажем libtest.so , библиотека , то у вас обычно есть:
Особенности атак на Linux инфраструктуры
- 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-файле, вы можете попробовать запустить:
readelf -a -W elffile
где elffile может быть библиотека исполняемого файла.
Если вы просто хотите получить версию библиотеки, вы можете поиграть с:
readelf -d /path/to/library.so |grep SONAME
AFAIK, такой информации нет (по крайней мере, по умолчанию) в исполняемых файлах.
Или вы можете положиться на саму программу или свою систему упаковки, как писал Рахул Патил.
хорошая информация, это ново для меня никогда не использовал readelf, если вы не возражаете, могу я спросить вас, где и зачем использовать readelf
Readelf (и аналогичные инструменты) полезен, когда вы хотите заглянуть внутрь эльфийского файла :). Я использую его в основном при программировании для поиска символов в библиотеках (когда что-то не работает) или когда есть проблемы с библиотекой. ( man readelf )
Вы можете использовать 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 )
Полезные программы для linux — мультимесенжер, чтение текста голосом, настройка мыши
Для систем на базе Redhat сделайте это:
ldd [file you want to run] | > needed-packages
Проверьте файл Нужных пакетов, убедитесь, что в именах файлов библиотеки отсутствуют пути. Если это так, удалите их, поэтому «/bin/lib/libx.so.1» измените на «libx.so.1»
Узнайте, какой пакет содержит библиотеку
yum -y provides [lib name]
Или поместите это в скрипт или запустите из строки cmd:
for lib in `cat libs.txt`; do yum -y provides $lib | head -2 | grep » : » >> packages.list done
Затем создайте следующий скрипт или запустите из строки cmd:
for package in `cat packages.list | awk ‘< print $1 >’`; do yum -y install $package done
Вы сделали, запустите вашу программу. Если вы получаете ошибки GUI при запуске. Скопируйте их, и, если они являются ссылками на библиотеки, найдите пакеты для них и установите таким же образом.
Источник: qastack.ru
Linux к каким библиотекам обращается программа
Библиотека сайта rus-linux.net
библиотеках мы будем иметь в виду динамически связываемые библиотеки (или разделяемые объекты). Они являются бинарными файлами, содержащими код функций, которые не исполняются как приложения, а могут использоваться из других бинарных файлов.
Несколько программ могут использовать одну и ту же разделяемую библиотеку. Имя файла разделяемой библиотеки обычно начинается с префикса lib , после которого должно быть записано само имя разделяемой библиотеки, расширение .so и, наконец, номер версии разделяемой библиотеки.
29.2. Директории /lib и /usr/lib
При просмотре содержимого директорий /lib и /usr/lib можно обнаружить большое количество символьных ссылок. Имена большинства файлов разделяемых библиотек содержат подробные описания номеров версий, причем для этих файлов также создаются символьные ссылки с именами, содержащими лишь указания на номера основных версий.
29.3. Утилита ldd
Работоспособность многих программ зависят от наличия определенных разделяемых библиотек в системе. Вы можете получить информацию о необходимых для корректной работы программы разделяемых библиотеках с помощью утилиты ldd .
В примере показан список разделяемых библиотек, необходимых для корректной работы утилиты su .
29.4. Утилита ltrace
Утилита ltrace позволяет ознакомиться со списком всех вызовов функций разделяемых библиотек, осуществленных определенной программой. В приведенном ниже примере используется параметр -p, позволяющий получить информацию лишь о суммарном количестве вызовов функций (каждая функция может вызываться множество раз), а также параметр -l, позволяющий выводить информацию о вызовах функций лишь из одного файла разделяемой библиотеки. Все это делается для того, чтобы узнать, какие библиотечные функции вызываются в процессе исполнения команды su — serena с привилегиями пользователя root.
29.5. Команды dpkg -S и debsums
Имя пакета программного обеспечения дистрибутива Debian/Ubuntu, который содержит указанную разделяемую библиотеку, может быть установлено следующим образом.
После этого вы можете проверить целостность всех файлов, установленных в систему из данного пакета программного обеспечения, с помощью утилиты debsums .
Если файл разделяемой библиотеки поврежден, переустановите пакет программного обеспечения с помощью команды aptitude reinstall $имя_пакета .
29.6. Команды rpm -qf и rpm -V
Имя пакета программного обеспечения дистрибутива RedHat/Fedora, который содержит указанную разделяемую библиотеку, может быть установлено следующим образом.
После этого вы можете использовать команду rpm -V для проверки целостности всех файлов, установленных из данного пакета программного обеспечения. В выводе из расположенного ниже примера содержится информация о том, что размер ( S ize) и метка времени модификации ( T ime stamp) файла разделяемой библиотеки изменились с момента его установки в систему.
В подобной ситуации вы можете использовать команду yum reinstall $имя_пакета для замены существующего в системе файла разделяемой библиотеки на его оригинальную версию.
Теперь при проверке целостности файлов из пакета программного обеспечения не выводится информации о каких-либо проблемах с файлом разделяемой библиотеки.
29.7. Трассировка вызовов библиотечных функций с помощью утилиты strace
Более детальная трассировка вызовов всех функций из разделяемых библиотек может осуществляться с помощью утилиты strace . Начнем с создания файла, доступного только для чтения.
После этого откроем данный файл с помощью текстового редактора vi , разместив в строке команды перед командой исполнения бинарного файла vi команду исполнения утилиты strace с записью данных трассировки в отдельный файл. Это позволит нам получить файл с информацией о всех вызовах функций разделяемых библиотек, осуществленных из бинарного файла vi .
Созданный нами файл может быть открыт только для чтения, но мы все равно попытаемся изменить его содержимое и использовать директиву :w! для принудительной записи данных в него. После этого мы закроем текстовый редактор vi и перейдем к рассмотрению содержимого файла журнала трассировки вызовов функций разделяемых библиотек.
Обратите внимание на то, что текстовый редактор vi осуществлял изменение прав доступа к файлу дважды. Файл журнала трассировки вызовов функций разделяемых библиотек содержит большой объем информации, поэтому его содержимое не приводится в полном объеме в данной книге.
Предыдущий раздел: | Оглавление | Следующий раздел: |
Глава 28. Ядро Linux | Глава 30. Резервные копии данных |
Источник: rus-linux.net
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
docLinux / articles / БИБЛИОТЕКИ LINUX.md
- Go to file T
- Go to line L
- Copy path
- Copy permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Cannot retrieve contributors at this time
160 lines (116 sloc) 14.8 KB
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents Copy raw contents
Copy raw contents
Все мы привыкли пользоваться программами в любой операционной системе для решения своих задач. Но за функциональностью программ стоит еще одна вещь, с которой мы редко встречаемся при обычной работе с компьютером. Это библиотеки, которые содержат общий набор функций и возможностей, используемых программами. Например, большинство программ, написанных на Си, используют стандартную библиотеку Си, в которой содержатся все основные возможности взаимодействия с системой.
У каждой программы есть свой набор библиотек, которые должны быть в системе чтобы она смогла работать. Иначе бы программистам пришлось заново изобретать различные алгоритмы, писать много кода и разработка программ занимала бы в разы больше времени. В этой статье мы собрали основные библиотеки Linux, а также их предназначение. Эта информация поможет вам лучше освоиться в системе.
ЧТО ТАКОЕ БИБЛИОТЕКИ?
Как я уже говорил выше — библиотеки реализуют общие возможности, которые потом используются программами. Если говорить просто, то библиотека — это набор функций, каждую из которых можно использовать в любой программе. Например, если программе нужно вывести строку на экран, она не будет лезть прямо в буфер видеокарты, а использует функцию из стандартной библиотеки.
Библиотеки делятся на два типа — динамические и статические. Статические библиотеки linux подключаются на этапе сборки программы, а динамические — во время выполнения и они общие для нескольких программ. Нас будут интересовать именно динамические библиотеки linux. Они находятся в папках /lib, /lib64, /usr/lib, /usr/lib/x86_64-linux-gnu.
Каждая библиотека имеет расширение .so, за которым следует номер версии. Этот номер увеличивается каждый раз, когда разработчики вносят серьезные изменения. Такой подход необходим для того, чтобы сохранить совместимость для программ, использующих старые версии. Например, в системе может быть две библиотеки libfuse.so.0 и libfuse.so.1. Далее мы рассмотрим основные библиотеки и их предназначение.
КАК ПОЛУЧИТЬ ИНФОРМАЦИЮ О БИБЛИОТЕКАХ?
Перед тем как перейти к рассмотрению самих библиотек, вам, наверное, будет интересно, как получить информацию о них и узнать где они находятся в вашей системе. Библиотеки Linux могут быть размещены в различных каталогах, в зависимости от дистрибутива, но посмотреть эти каталоги можно, выполнив:
Во всех перечисленных здесь каталогах находятся статические и динамически библиотеки Linux:
ls -l /lib/x86_64-linux-gnu/
Информацию о зависимостях каждой библиотеки вы можете посмотреть командой ldd:
А еще можно узнать какому пакету принадлежит библиотека в Ubuntu:
dpkg -S /lib/x86_64-linux-gnu/ld-2.24.so
Как видите, библиотека ld.so принадлежит пакету libc6, точнее она входит в набор инструментов Си. Более подробно, о том, как устанавливать новые библиотеки и решать проблемы с ними, описано в статье библиотеки Ubuntu .
Это библиотеки основных языков программирования, которые содержат базовую функциональность для взаимодействия с системой.
- libanl.so — библиотека работы с DNS;
- libc.a — основная статическая библиотека языка Си;
- libdl.a — библиотека, отвечающая за загрузку других библиотек во время запуска программы;
- libnsl.so — работа со службой NIS;
- libstdc++.so — стандартная библиотека C++;
- libutil.so — реализует основные часто используемые функции;
- libelf.so — библиотека для работы с бинарными файлами ELF;
- libevent.so — библиотека с реализацией механизма вызова функций после события;
- libgnutls.so — библиотека с основными методами и возможностями, используемыми в стандартных утилитах Linux;
- ld-linux.so — главная библиотека, она собрана в виде статической и не имеет зависимостей. Загружает другие библиотеки и исполняемые файлы. Вы можете вызвать эту библиотеку как программу и передать ей адрес исполняемого файла для запуска.
Эти библиотеки содержат наборы кодеков для воспроизведения различных медиа данных. Некоторые из них имеют несвободную лицензию или закрытый исходный код:
- liba52.so — свободный декодер ATSC A/52;
- libavfilter6.so — библиотека фильтров ffmpeg;
- libavcodec57.so — библиотека кодеков ffmpeg;
- libavformat57.so — библиотека форматов ffmpeg;
- libavutil55.so — библиотека дополнительных функций ffmpeg;
- libdv.so — программный кодек для DV;
- libmad.so — MPEG аудио декодер;
- libmpeg2.so — потоковый декодер видео данных;
- libmpg123.so — библиотека консольного плеера mpg123;
- libwebp.so — декодирование формата Webp;
- libxvidcore.so — медиа кодек MPEG-4.
- libao.so — библиотека проигрывания звука с простым интерфейсом;
- libasound.so — библиотека взаимодействия со звуковой подсистемой ALSA;
- libaudio2.so — библиотека работы со звуком, входит в состав ALSA;
- libespeak.so — библиотека синтеза речи;
- libpulse.so — библиотека с основными методами PulseAudio;
РАБОТА С АРХИВАМИ
- libarchive.so — библиотека для работы с архивами различных форматов;
- liblzma.so — работа с архивами LZMA.
- libart.so — библиотека с реализацией функций для работы с 3d графикой;
- libaa.so — библиотека ASCII графики;
- libgtk-3.so — набор методов графического фреймворка GTK 3;
- libgd.so — базовые функции работы с графикой и рисования;
- libgif.so — работа с форматом изображений Gif;
- libjpeg.so — работа с изображениями Jpeg;
- libglapi.so — свободная реализация методов для работы с OpenGL;
- libgtk-x11-2.0.so — набор методов библиотеки GTK 2;
- libwx_baseu.so, libwx_baseu_net-3.0.so и другие — набор библиотек фремворка создания графических приложений WX;
- libX11.so — основные методы и функции X сервера;
- libncurses.so — одна из самых популярных библиотек псевдографики;
- libQtGui.so, libQt5Svg.so, libQt5Widgets.so и другие — библиотеки фреймворка разработки графических приложений Qt.
РАБОТА С ТЕКСТОМ
- libaspell.so — библиотека проверки орфографии;
- libfreetype.so — библиотека отрисовки шрифтов;
- libharfbuzz.so — библиотека обработки символов Unicode;
- libxml2.so — библиотека разбора XML;
- libyaml-0.so — библиотека разбора Yaml.
- libcrack.so — библиотека с реализацией методов перебора паролей для проверки их надежности;
- libcrypt.so — библиотека, отвечающая за шифрование;
- libssl3.so — библиотека шифрования SSLv3;
- libapparmor.so — библиотека управления системой безопасности AppArrmor;
- libaudit.so — библиотека слежения за состоянием системы и регистрации событий.
- libcups.so — библиотека работы с принтером;
- libfuse.so — библиотека организации виртуальных файловых систем;
- libgphoto2.so — библиотека взаимодействия с камерами по USB;
- libsensors.so — используется для получения информации от датчиков на материнской плате;
- libudisks2.so — библиотека usisks, которая отвечает за автоматическое монтирование и обнаружение подключенных устройств;
- libv4l1.so — библиотека работы с веб-камерами;
- libpci.so — библиотека работы с PCI устройствами;
- libusb-1.0.so — библиотека управления USB;
- libdrm.so — библиотека с общими возможностями Direct Rendering Manager, отрисовки графики с помощью видеокарты;
- libdrm_amdgpu.so — DRM для драйвера AMDGPU;
- libdrm_intel.so — DRM для карт Intel;
- libdrm_nouveau.so — свободный DRM для видеокарт Nvidia;
- libresolv.so — библиотека получения IP адреса по имени хоста;
- libpcap.so — библиотека анализа и захвата сетевых пакетов;
- libproxy.so — настройка и управление прокси;
- libSDL.so — библиотека эмуляции загрузки компьютера и базовых возможностей BIOS;
- libwine.so — библиотека прослойки для запуска приложений Windows в Linux.
- libvirt.so — библиотека управления KVM;
Источник: github.com