Инструменты пользователя

Инструменты сайта


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

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 /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)

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

# так
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 · Последнее изменение: 2019/10/01 16:13 (внешнее изменение)