Где Ubuntu хранит свои библиотечные файлы?

17

Я хочу добавить свою собственную библиотеку для использования при компиляции c, но не знаю, где ее хранит ubuntu.

david25
источник
5
Он хранится в / usr / lib & / usr / include
karthick87
я нашел мою библиотеку в / usr / include, как мне их вставить? я должен просто поместить заголовочный файл и файл ac рядом с ним, или я должен написать заголовок и функцию вместе в одном файле .h?
david25
3
Библиотеки и заголовки - это разные вещи, / usr / include НЕ содержит библиотек, он содержит заголовки, которые являются определениями функций / объектов, доступных из библиотек. Вопрос должен быть улучшен, трудно понять, чего вы пытаетесь достичь.
Жоау Пинту

Ответы:

11

Исходя из ваших комментариев к вашему вопросу, я думаю, что вы на самом деле спрашиваете: «Как установить написанную мной специальную библиотеку и где ее разместить?»

В общем, вещи, созданные локально для других пользователей на компьютере пользователя, помещаются в дерево / usr / local. Заголовочный файл должен находиться в / usr / local / include. Скомпилированная библиотека должна находиться в / usr / local / lib. Файл .c не является частью библиотеки, он является частью исходного кода и обычно не устанавливается для использования конечным пользователем. Вам понадобится root-доступ для размещения файлов в любом из этих мест.

Чтобы собрать библиотеку, вам нужно будет сначала решить, хотите ли вы статическую или динамическую (общую) библиотеку. Дополнительную информацию о создании общей библиотеки можно найти в разделе 3.4, «Создание общей библиотеки» по адресу http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html . (У них также есть рекомендация о том, где их разместить - у большинства разработчиков будет свое мнение или три :-))

jwernerny
источник
11

В зависимости от библиотеки, Ubuntu хранит свои библиотеки в основном в трех местах

  1. / Lib
  2. / USR / Lib
  3. / USR / местные / Библиотека

Следующее из стандарта иерархии файловой системы

/ Lib

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

/ USR / Lib

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

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

/ usr / local / lib содержит локальные библиотеки, то есть одну специфичную для этой системы, но я не могу найти ссылки на / usr / local / lib в FHS, она содержит только объяснение для / usr / local

binW
источник
2

Ubuntu следует стандарту иерархии файловых систем ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard ), библиотеки обычных приложений должны храниться в / usr / lib.

Обратите внимание, что разработка / управление библиотеками не является тривиальной темой, вы должны прочитать более подробную документацию, вот хороший учебник: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

Жоао Пинту
источник
0

Вы должны указать компилятору, где он может найти вашу библиотеку. Предполагается, что путь к вашей библиотеке - «/path/to/lib/libfoo.a», вы можете скомпилировать и связать вашу программу «hello.c» следующим образом:

gcc -L/path/to/lib -lfoo hello.c

Это не относится к Ubuntu, на самом деле все известные мне C-компиляторы поддерживают эти флаги.

Фрэнк
источник
-2

В Ubuntu они находятся в /usr/include.

Эвансон Вачира Ванг'омбе
источник
1
Заголовочные файлы находятся в/usr/include. Фактические двоичные файлы для библиотеки там не хранятся. Заголовки могут считаться частью библиотеки, но их нужно устанавливать отдельно, и они используются для компиляции программ, которые используют библиотеку. Как только программа, использующая библиотеку, была скомпилирована, она больше не нуждается или не использует файлы заголовков.
Элия ​​Каган