ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

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

¬ данной статье мы посмотрим, что такое статические и динамические библиотеки. ћестоположение библиотек по умолчанию. ќпределение используемых библиотек. «агрузка библиотек.

статические и динамические библиотеки

Ѕиблиотеки это набор функций, которые могут использоватьс€ в различных программах. Ѕиблиотеки могут быть статические (библиотека прив€зываетс€ к определенной программе или софт содержит данную библиотеку в своем теле.) и динамическими (библиотеки груз€тс€ в оперативную пам€ть и используютс€). ѕлюсы первого варианта нет проблемы совместимости, т. к. софт уже в себе содержит библиотеку, библиотека всегда с собой. Ќо при этом программы станов€тс€ большие по размеры и т.к кажда€ может загружать свои библиотеки, а иногда и одинаковые.  ¬торой вариант значительно лучше, сами программы по своему размеру меньше. Ѕиблиотека загружаетс€ один раз в оперативку. » следующа€ программа, которой необходимы такие же функции, берет и использует эти данные.

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

ѕо умолчанию библиотеки в Linux наход€тс€ в /lib

» есть втора€ папка /usr/lib. ¬ ней наход€тс€ библиотеки, которые используют программы расположенные /usr/bin.  ѕути к библиотекам указаны файле /etc/ld.so.conf. ƒанный файл можно просмотреть стандартным способом, через утилиту cat.

/etc/ld.so.conf

¬идим, что написано включить все библиотеки, которые расположены по пути, указанном в файле. “е которые оканчиваютс€ на .conf. ќн просто включает в себ€ все настройки, которые наход€тс€ в конфигурационных файлах, в данной директории. ѕереходим в данную директорию.

ѕереходим в данную директорию

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

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

ls | grep ld.

ѕолучим следующее:

ls | grep ld.

¬идим 3 основных конфигурационных файла. ld.so.conf - это файл конфигурации в котором написано откуда брать дополнительные библиотеки. ƒиректори€ ls.so.conf.d в которой наход€тс€ дополнительные конфигурационные файлы и ld.so.cache это кэш библиотек. ќн у нас выстраиваетс€ каждый раз дл€ того, чтобы программы при необходимости при запросе библиотек не копались в файлах, а сразу брали из загруженного в оперативную пам€ть кэша. “.е. если мы вносим какие-то изменени€ в файл конфигурации, добавл€ем какие-то конфигурационные файлы нам необходимо обновить этот кэш.  эш обновл€етс€ командой ldconfig. Ётого, собственно, достаточно, чтобы прогрузить все библиотеки в кэш.

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

ƒл€ этого мы будем использовать команду ldd и путь к бинарному файлу. Ќапример: ѕрограмма ls котора€ используетс€ дл€ вывода списка файлов в каталоге. ќна находитс€ в каталоге /bin/ls.

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

какие so использует данна€ программа

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

¬озможно добавление библиотек вручную, это может потребоватьс€ если мы ставим совершенно стороннее программное обеспечение, которое очень трудно взаимодействует с Linux или устаревшее. “.е. которое само не может создать конфигурационный файл и разнести библиотеки в системные директории Linux. ≈сли мы хотим сделать это вручную, тогда нам необходим тот самый файл /etc/ld.so.conf. ¬ данный файл мы можем дописать путь к файлу конфигурации библиотек тех, которые нам нужны. Ћибо есть более легкий вариант с использованием переменной export LD_LIBRARY_PATH и указать путь к тем особенным библиотекам, которые будет использовать наша "особенна€" программа. ќбычно все стороннее программное обеспечение устанавливаетс€ в папку /opt. »тоговый вариант будет выгл€деть как: export LD_LIBRARY_PATH=/opt/soft/lib и когда пройдет экспорт, у нас попробует погрузитс€ из этого пути библиотека, но перед этим необходимо не забыть сделать ldconfig.