Linux lib file info

Библиотеки Linux

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

У каждой программы есть свой набор библиотек, которые должны быть в системе чтобы она смогла работать. Иначе бы программистам пришлось заново изобретать различные алгоритмы, писать много кода и разработка программ занимала бы в разы больше времени. В этой статье мы собрали основные библиотеки Linux, а также их предназначение. Эта информация поможет вам лучше освоиться в системе.

Что такое библиотеки?

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

Библиотеки делятся на два типа — динамические и статические. Статические библиотеки linux подключаются на этапе сборки программы, а динамические — во время выполнения и они общие для нескольких программ. Нас будут интересовать именно динамические библиотеки linux. Они находятся в папках /lib, /lib64, /usr/lib, /usr/lib/x86_64-linux-gnu. Каждая библиотека имеет расширение .so, за которым следует номер версии. Этот номер увеличивается каждый раз, когда разработчики вносят серьезные изменения. Такой подход необходим для того, чтобы сохранить совместимость для программ, использующих старые версии. Например, в системе может быть две библиотеки libfuse.so.0 и libfuse.so.1. Далее мы рассмотрим основные библиотеки и их предназначение.

Как получить информацию о библиотеках?

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

Во всех перечисленных здесь каталогах находятся статические и динамически библиотеки Linux:

Информацию о зависимостях каждой библиотеки вы можете посмотреть командой 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 — главная библиотека, она собрана в виде статической и не имеет зависимостей. Загружает другие библиотеки и исполняемые файлы. Вы можете вызвать эту библиотеку как программу и передать ей адрес исполняемого файла для запуска.
Читайте также:  Light table install linux

Библиотеки кодеков

Эти библиотеки содержат наборы кодеков для воспроизведения различных медиа данных. Некоторые из них имеют несвободную лицензию или закрытый исходный код:

  • 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;
Читайте также:  Мультизагрузочная флешка linux windows iso

Сеть

  • libresolv.so — библиотека получения IP адреса по имени хоста;
  • libpcap.so — библиотека анализа и захвата сетевых пакетов;
  • libproxy.so — настройка и управление прокси;

Эмуляция

  • libSDL.so — библиотека эмуляции загрузки компьютера и базовых возможностей BIOS;
  • libwine.so — библиотека прослойки для запуска приложений Windows в Linux.
  • libvirt.so — библиотека управления KVM;

Выводы

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

На завершение урок про библиотеки Linux:

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

How do I get a list of shared library filenames under Linux?

Is there a GNU Linux built-in for getting a list of the filenames of shared libraries? I have considered parsing the output of ldconfig -p . However, I’m not sure about consistency in output from system to system. I am already aware that I could use find but given that the linker / loader has a cache of libraries and locations, it seems more efficient to use it in some way. Additionally, the paths that the linker / loader searches are the only ones I’m concerned with—i.e libraries that have been processed by ldconfig .

1 Answer 1

If you want to catch them all, there is no other choice but to do full filesystem traversals. ldconfig knows only about the libraries in the standard paths and the extra paths it is configured to look in (usually defined in /etc/ld.so.conf* ). The usual suspect places where other libraries can be found are $HOME and /opt , though there is no limit, especially when people build applications themselves.

If you don’t trust the output of ldconfig -p , you can parse its cache directly. It’s binary, but using strings removes all the garbage (5 so /lib/ matches):

On my system, they both give the same results, which I verified with this quicky:

a=$(ldconfig -p | awk -F'> ' '' | sort); # get them to the same format b=$(strings -n5 /etc/ld.so.cache | sort -u); echo -e "$a\n$b\n$b" | sort | uniq -u 

Which checked if any library on the ldconfig -p list was not mentioned in the cache. Nothing was returned.

Источник

Viewing Linux Library / Executable version info

The version info in not explicitly stored in an ELF file. What you have in there is the name of the library, the soname , which includes the major version. The full version is usually stored as a part of the library file name.

If you have library, say libtest.so , then you usually have:

  • libtest.so.1.0.1 — The library file itself, containing the full version
  • libtest.so.1 — Symlink to libtest.so.1.0.1 , having the same name as soname
  • libtest.so — Symlink to libtest.so.1 used for linking.
Читайте также:  Настройка аудита astra linux

In the library file libtest.so.1.0.1 , there will be an entry called SONAME in dynamic section, that will say this library is called libtest.so.1 . When you link a program against this library, the linked program will store the soname of the library under NEEDED entry in the dynamic section.

If you want to verify, what exactly is in which ELF file, you can try to run:

where elffile can be either an library of an executable.

If you simply want to get the library version, you can play with:

readelf -d /path/to/library.so |grep SONAME 

AFAIK, there’s no such info (at least not by default) in executable files.

Or you can rely on the program itself or your packaging system, as Rahul Patil wrote.

nice info, it’s new to me never used readelf, if you don’t mind , may i ask you where & why use readelf

Readelf (and similar tools) is useful, when you want to look inside an elf file :). I use it mostly when programming to look up symbols in libraries (when something doesn’t work), or when there’s some problem with a library. (man readelf)

You can use ldconfig -v | grep libraryname , also command has option command -V or binaryfile —version

test@ubuntukrb12:~# ls --version ls (GNU coreutils) 8.13 Copyright (C) 2011 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. 

also you can use yum or aptitude based on distro you are using eg.

in RHEL5/CENTOS5/Fedora you can use yum info packagename or if it installed then use rpm —version packagename

 [root@ldap1 ~]# yum info bind97 Loaded plugins: downloadonly, fastestmirror, security Loading mirror speeds from cached hostfile * base: mirrors.sin3.sg.voxel.net * epel: mirror.imt-systems.com * extras: mirrors.sin3.sg.voxel.net * updates: mirrors.sin3.sg.voxel.net Installed Packages Name : bind97 Arch : i386 Epoch : 32 Version : 9.7.0 Release : 10.P2.el5_8.4 Size : 6.3 M Repo : installed Summary : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server URL : http://www.isc.org/products/BIND/ License : ISC Description: BIND (Berkeley Internet Name Domain) is an implementation of the DNS : (Domain Name System) protocols. BIND includes a DNS server (named), : which resolves host names to IP addresses; a resolver library : (routines for applications to use when interfacing with DNS); and : tools for verifying that the DNS server is operating properly. 

In Ubuntu You can use aptitude show pkgname or dpkg —version pkgname

root@ubuntukrb12:~# aptitude show bind9utils Package: bind9utils State: installed Automatically installed: yes Version: 1:9.8.1.dfsg.P1-4ubuntu0.4 Priority: optional Section: net Maintainer: Ubuntu Developers Architecture: amd64 Uncompressed Size: 306 k Depends: libbind9-80, libc6 (>= 2.14), libdns81, libisc83, libisccc80, libisccfg82 Conflicts: bind9utils Replaces: bind9 ( 

Источник

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