Де Ubuntu зберігає свої бібліотечні файли?


18

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


5
Він зберігається в / usr / lib & / usr / include
karthick87

я знайшов мою бібліотеку в / usr / включати, як мені рухатись із їх розміщенням? я повинен просто покласти поруч із ним файл заголовка та файл змінного струму чи слід написати заголовки та функції разом у один .h-файл?
david25

3
Бібліотеки та заголовки - це різні речі, / usr / include НЕ містить бібліотек, вона містить заголовки, які є визначеннями функцій / об'єктів, доступних у бібліотеках. Питання слід удосконалити, важко зрозуміти, чого ви намагаєтесь досягти.
Жоао Пінто

Відповіді:


11

На основі ваших коментарів до вашого запитання, я думаю, що ви насправді запитуєте: "Як встановити власну бібліотеку, яку я написав, і куди її потрібно поставити?"

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

Щоб створити бібліотеку, потрібно спочатку побудувати рішення про те, чи хочете ви статичну або динамічну (спільну) бібліотеку. Більш детальну інформацію про створення спільної бібліотеки можна знайти в розділі 3.4. Створення спільної бібліотеки за адресою http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html . (Вони також мають рекомендації про те, куди подіти речі - більшість розробників матимуть думку чи три :-))


11

Залежно від бібліотеки, ubuntu зберігає свої бібліотеки переважно у трьох місцях

  1. / ліб
  2. / usr / lib
  3. / usr / local / lib

Далі йде з Стандартної ієрархії файлової системи

/ ліб

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

/ usr / lib

/ usr / lib включає об'єктні файли, бібліотеки та внутрішні бінарні файли, які не призначені для виконання безпосередньо користувачами або скриптами оболонки. [22]

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

/ usr / local / lib містить локальні бібліотеки, тобто одну конкретну для цієї системи, але я не можу знайти посилання на / usr / local / lib у FHS, вона містить лише пояснення для / usr / local.


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. Фактичні бінарні файли бібліотеки там не зберігаються. Заголовки можуть вважатися частиною бібліотеки, але їх потрібно встановлювати окремо, і вони використовуються для складання програм, які використовують бібліотеку. Після того як програма, яка використовує бібліотеку, була складена, їй більше не потрібні файли заголовків і не використовувати їх.
Елія Каган
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.