User Tools

Site Tools


гайд_по_библиотекам

library

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

  • статические - это когда сам софт содержит в себе библиотеки
  • динамические - когда библиотеки подгружаются в оперативную память

По умолчанию, библиотеки находятся в двух директориях

  • /lib в ней содержатся библиотеки которые используют программы находящиеся в директории /bin
  • /usr/lib в ней содержатся библиотеки которые используют программы находящиеся в директории /usr/bin

Пути к библиотекам указаны в файле

cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf

Как видим конфигурационные файла с указанием путей к библиотекам хранятся в директории

ls -l /etc/ld.so.conf.d/
итого 12
-rw-rw-r-- 1 root root 38 ноя 24  2014 fakeroot-x86_64-linux-gnu.conf
-rw-r--r-- 1 root root 44 янв 27  2016 libc.conf
-rw-r--r-- 1 root root 68 апр 15  2016 x86_64-linux-gnu.conf
lrwxrwxrwx 1 root root 43 июн 29  2018 x86_64-linux-gnu_EGL.conf -> /etc/alternatives/x86_64-linux-gnu_egl_conf
lrwxrwxrwx 1 root root 42 июн 29  2018 x86_64-linux-gnu_GL.conf -> /etc/alternatives/x86_64-linux-gnu_gl_conf

смотрим откуда берет библиотеки libc.conf

cat /etc/ld.so.conf.d/libc.conf
# libc default configuration
/usr/local/lib

Дополнительное программное обеспечение, которому нужны свои библиотеки не идущие в состав дистрибутива, может создать в этой директории - свой конфигурационный файл.
Для того, чтобы приложение использующее динамические библиотеки могло найти их, используется следующие конфигурационные файлы, находящиеся в директории /etc

ls -l /etc | grep ld.so
# Кэш библиотек
-rw-r--r-- 1 root root   49970 июн 20 06:21 ld.so.cache
# Файл конфигурации, который указывает откуда брать библиотеки
-rw-r--r-- 1 root root      34 янв 27  2016 ld.so.conf
# Директория в которой находятся дополнительные конфигурационные файлы
drwxr-xr-x 2 root root    4096 ноя  6  2018 ld.so.conf.d

для обновления кэша используется команда

ldconfig

ldd

Ldd – это инструмент командной строки, который позволяет просматривать зависимости исполняемого файла от общих объектов. Библиотека относится к одному или нескольким предварительно скомпилированным ресурсам, таким как функции, подпрограммы, классы или значения. Каждый из этих ресурсов объединяется для создания библиотек. Для того чтобы посмотреть, какими библиотеками пользуется та или иная программа используем команду ldd

ldd /bin/cat
        linux-vdso.so.1 =>  (0x00007ffe6f124000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe8e9c80000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fe8ea04a000)

У ldd есть следующие параметры:

  • -v – Болтливый режим.
  • -u – показывает неиспользуемые прямые зависимости
  • -d – выполняет перемещение данных и показывает отсутствующие объекты ELF.
  • -r – выполняет перемещение данных и функций и показывает отсутствующие объекты и функции ELF.


<WRAP center round tip 99%> Nota Bene!
Ldd работает только с динамическими исполняемыми файлами. Если его использовать для статического исполняемого файла, получим ошибку:
not a dynamic executable </WRAP>

Если по каким-то причинам, нужно в ручную указать путь к исполняемым файлам библиотек, для этого используем специальную переменную среды

# так
export LD_LIBRARY_PATH=/your/custom/path_1:/your/custom/path_2
# или так
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/
# также сразу можем добавить в ~/.bashrc
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/' >> ~/.bashrc

Либо в директории /etc/ld.so.conf.d создать файл конфигурации, и в нем указать путь к библиотекам

vim /etc/ld.so.conf.d/NewLibs.conf
/home/linux/myLocalLibs
# После сохранения файла, обязательно выполним
ldconfig
гайд_по_библиотекам.txt · Last modified: 2023/04/06 10:28 by 127.0.0.1