Это вопрос, который озадачивал меня больше года, но я никогда не пытался ответить на него … до сегодняшнего дня …
Я заметил, что у меня установлены SFML-«библиотеки» в / usr / local / include / SFML /.
Если я загляну внутрь этой директории, я вижу, что она содержит в основном заголовочные файлы. Поэтому я предполагаю, что каталог ‘include’ должен содержать заголовочные файлы, а не объектные файлы.
Это поднимает вопрос. Где «cmath» или «вектор»?
Оказывается, используя find, они помещаются в ‘/usr/include/c++/4.7/cmath’ — в основном ‘/ usr / include /’
Так в чем же разница между локальным включением (‘/ usr / local / include’) и каталогом включения (‘/ usr / include’)?
Также среди файловой системы я вижу много директоров ‘lib’, ‘lib32’ и ‘lib64’. Я предполагаю, что скомпилированные файлы .cpp или объектные файлы находятся в этих каталогах. Я предполагаю, что lib был старым каталогом, который использовался до того, как 64-битные архитектуры вошли в игру. Я предполагаю, что современное общепринятое решение — поместить ваши 32-битные объектные файлы в lib32, а ваши 64-битные версии — в lib64. Это верно?
Существует каталог / usr / local / lib.
Но есть и каталог / usr / lib. Опять же, зачем нужен дополнительный «местный»?
Также внутри ‘/ usr /’ есть ‘lib’, ‘lib32’ и ‘lib64’. Но внутри / usr / есть только один каталог lib. Почему это?
Я не уверен, что есть конкретный ответ на этот вопрос, но я постараюсь дать хотя бы НЕКОТОРЫЕ указания.
типично /usr/local
используется для «пользовательских установок». То есть это не часть фундаментальной установки. Конечно, это руководство, так что вы все равно найдете некоторые вещи, которые установлены в /usr/lib
когда он действительно должен быть установлен в /usr/local/lib
(или же /usr/local/lib{32,64}
при необходимости).
И да, lib32
а также lib64
предназначен для библиотек, которые зависят от размера (хотя ваша программа будет отлично работать, если вы установите 32-битные библиотеки в lib64 и 64-битные в lib32 — просто будет сложнее следить за тем, что происходит, если вы это сделаете!).
Иногда это lib
а также lib64
или же lib
а также lib32
, Это варьируется в зависимости от распределения. И если есть lib32
а также lib64
, lib
часто там хранятся вещи, которые не зависят от размера, такие как файлы конфигурации, которые хранятся в /usr/lib
,
Есть, конечно, ДРУГИЕ каталоги, о которых полезно знать — ваш домашний каталог, /var/log/
для файлов журнала, /var/run
для блокировки файлов и .pid
файлы и другие файлы «состояния» для конкретного приложения, и есть /var/lib
каталог также — который, кажется, содержит некоторый случайный выбор специфичных для компонента библиотек. THe /opt
(что-то вроде другого варианта /usr/local/
иногда используется для хранения двоичных файлов и т. д.
Редактировать:
Другая категория каталогов, о которых может быть полезно знать, — это /proc
, /sys
а также /dev
каталоги.
/proc
который поддерживается procfs
Драйвер файловой системы в ядре дает информацию о том, что делает система, например, cat /proc/meminfo
покажет статистику по памяти (и ее использованию), cat /proc/cpuinfo
покажет какой процессор у машины. cat /proc/self/status
покажет статус текущего процесса. Если вы хотите увидеть, что делает какой-то другой процесс, cat /proc/xx/status
, где xx
это идентификатор процесса (число) покажет, что делает этот другой процесс. Много больше доступно, если вы загляните внутрь — некоторые из них более полезны, чем другие.
/sys
похожа на структуру /proc
, но есть вещи, которые больше ориентированы на «систему», где /proc
больше о процессах, но есть некоторые совпадения.
/dev/
является «рутом» для устройств. /dev/sda
будет одним из ваших жестких дисков (но может иметь другое имя, в зависимости от того, какие именно у вас жесткие диски).
Вы должны прочитать это (для краткой версии):
http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
и это (для всех скучных деталей):