Рубрики
kernel \ source \ пакеты \ исходники

Библиотеки и запуск программ

При запуске программ нужно найти и загрузить все библиотеки — за это отвечает так называемый компоновщик времени выполнения. 
При этом учитываются все каталоги, указанные в переменной окружения LDLIBRARYPATH. 
Эти каталоги разделяются двоеточиями.

Кроме того, компоновщик интерпретирует файл /etc/ld.so.cache. 
Это двоичный файл, содержащий всю важную информацию о библиотеке (номера версий, пути доступа и т. д.). 
Он нужен только для того, чтобы сэкономить время, которое компоновщик в противном случае потратил бы на поиск библиотек.

Файл /etc/ld.so.cache создается программой ldconfig, которая, в свою очередь, интерпретирует /etc/ld.so.conf. 
В этом файле обычно содержится список всех библиотечных каталогов 
или список ссылок на другие файлы с каталогами.

Каталоги /lib и /usr/lib учитываются в любом случае и поэтому отсутствуют в ld.so.conf или других конфигурационных файлах. 
Если кроме /lib и /usr/lib не придется учитывать никаких каталогов, то ld.so.conf можно вообще опустить.

В некоторых дистрибутивах команда ldconfig выполняется при каждом запуске компьютера, 
чтобы гарантировать максимально обновленное состояние файла кэша. 
Ее всегда нужно выполнять в тех случаях, когда вы вручную устанавливаете новую библиотеку, иначе система не увидит библиотек.
Если библиотеки находятся в новом каталоге, нужно соответствующим образом дополнить файл /etc/ld.so.conf. 
При установке пакетов с библиотеками эти задачи обычно выполняет менеджер пакетов.

32- и 64-битные библиотеки:

Большинство распространенных дистрибутивов в настоящее время существуют как минимум в двух вариантах сборки: 
для 32-битных процессоров, совместимых с Intel/AMD, и для 64-битных процессоров, совместимых с Intel/AMD. 
Разумеется, для 32-битных процессоров предусмотрены только 32-битные библиотеки. 

Однако, к сожалению, того же нельзя сказать о 64-битных дистрибутивах: 
были и остаются программы, которые не компилируются для 64-битных систем. 
Наиболее известная программа такого рода — Acrobat Reader компании Adobe.

/lib и /lib64. 
Для выполнения 32-битных программ в 64-битных дистрибутивах вам потребуются 32-битные библиотеки. 
Чтобы можно было избежать конфликтов, библиотеки устанавливаются в различные каталоги. 
Среди-профессионалов в Linux этот метод называется мулътиархитектура, или биархитектура, 
так как параллельно поддерживается несколько (или две) архитектуры процессоров. 

В большинстве дистрибутивов встречаются каталоги /lib32 или /lib64, позволяющие не смешивать библиотеки с различной разрядностью. 
Такая двойственность, разумеется, связана с определенными недостатками: 
при установке многочисленных библиотек в двух экземплярах тратится больше дискового пространства, кроме того, при этом осложняется техническая поддержка.