Разница между lib, lib32, lib64, libx32 и libexec

Моя 64-битная система Ubuntu 13.04 имеет следующие каталоги в / :

 lib lib32 lib64 libx32 libexec 

В каталоге /usr есть:

 lib lib32 libx32 libexec 

Это было похоже на то, на что можно было легко ответить с помощью поиска, но я ничего не нашел в сети, кроме того, что эти каталоги хранят общие библиотеки (кроме libexec). Но какие общие библиотеки входят в папки (отличные от 32 бит в lib32 и 64 бит в lib64)? Может ли кто-нибудь объяснить разницу между всеми этими каталогами?

One Solution collect form web for “Разница между lib, lib32, lib64, libx32 и libexec”

Ах да, это очень запутанная часть, если вы занимались Unixes в течение какого-то времени. Существует стандарт, который большинство Unix-ов «попробуют» следовать под названием FHS – Стандарт иерархии файловой системы .

Учитывая, что я в основном использую дистрибутивы на основе Red Hat, я больше всего знаком с их принятием FHS для дистрибутивов Fedora, CentOS и RHEL Linux. Но я также использовал дистрибутивы на основе Debian и BSD, и они не все разные, с точки зрения того, где вещи хранятся, файловая система мудрая.

Теперь на ваши вопросы. Я хотел бы взглянуть на документ FHS , который свободно управляет этими структурами каталогов. В целом:

Directory – /lib

Содержит основные разделяемые библиотеки и модули ядра.

Назначение: каталог / lib содержит изображения разделяемой библиотеки, необходимые для загрузки системы и запуска команд в корневой файловой системе, т.е. бинарниками в / bin и / sbin.

Примечание1. Общие библиотеки, которые необходимы только для двоичных файлов в / usr (например, любые двоичные файлы X Window), не должны находиться в / lib. Здесь могут находиться только общие библиотеки, необходимые для запуска двоичных файлов в / bin и / sbin.

Примечание2. Учитывая, что основная цель / lib состоит в том, чтобы содержать библиотеки для инструментов, развернутых в каталогах / bin & / sbin, библиотеки в / lib могут быть либо 32-разрядными, либо 64-разрядными.

Например (64-битная система Fedora 14)

 $ uname -a Linux grinchy 2.6.35.14-106.fc14.x86_64 #1 SMP Wed Nov 23 13:07:52 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux 

Вот выборка файлов из моего / lib

 ./libpam.so.0.82.2: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped ./libplc4.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped ./libidn.so.11.6.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped ./upstart/telinit: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped ./upstart/runlevel: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped ./upstart/shutdown: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped ./upstart/reboot: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped ./libdb-4.8.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped ./firmware/mixart/miXart8.elf: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), statically linked, not stripped ./libtinfo.so.5.7: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped 

Каталог – /lib<qual>

Альтернативные форматы основных разделяемых библиотек (необязательно). Это будут каталоги / lib32, / lib64 и т. Д.

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

Примечание. В этом случае / lib32 и / lib64 могут быть библиотечными каталогами и / lib символической ссылкой на одну из них.

Directory – /usr/lib

Библиотеки для программирования и пакетов.

Назначение: / usr / lib содержит объектные файлы, библиотеки и внутренние двоичные файлы, которые не предназначены для непосредственного выполнения пользователями или сценариями оболочки.

Примечание1. В / usr / share должны быть размещены другие независимые от архитектуры статические файлы и подкаталоги, зависящие от приложения.

Приложения могут использовать один подкаталог в / usr / lib. Если приложение использует подкаталог, все зависящие от архитектуры данные, исключительно используемые приложением, должны быть помещены в этот подкаталог.

Примечание2: Например, поддиректория perl5 для модулей и библиотек Perl 5.

Directory – /usr/lib<qual>

Библиотеки альтернативного формата (необязательно).

Назначение: /usr/lib<qual> выполняет ту же роль, что и / usr / lib для альтернативного двоичного формата, за исключением того, что символические ссылки /usr/lib<qual>/sendmail и /usr/lib<qual>/X11 не являются обязательный.

Примечание . Случай, когда / usr / lib и /usr/lib<qual> являются одинаковыми (один является символической ссылкой на другой), эти файлы и подкаталоги для каждого приложения будут существовать.

TLDR;

В целом:

Если есть библиотеки, которые требуются исполняемому файлу в каталогах / bin или / sbin, эти библиотеки должны находиться в каталогах / lib *.

Если есть библиотеки для использования программ и пакетов, они идут в / usr / lib / *. Если есть исполняемые файлы, которые необходимы конкретной библиотеке, но эти исполняемые файлы не могут быть вызваны пользователями напрямую или root, они идут в / usr / libexec.

  • Расположение, запуск и мониторинг сервера
  • Как интерпретация оболочки ././command-name?
  • Правила синтаксиса пути
  • Любой способ синхронизации структуры каталогов, когда файлы уже с обеих сторон?
  • Когда следует использовать конечную косую черту в каталоге?
  • Что особенного в каталогах, чьи имена начинаются с точки?
  • Можно ли использовать дерево для отображения количества файлов на уровне?
  • Как регистрировать все события, выполняемые в каталоге?
  • Странное имя каталога, показанное обратным слэшем
  • Создание дубликата пути в Unix
  • поиск абсолютного каталога
  • Linux и Unix - лучшая ОС в мире.