Gdzie Ubuntu przechowuje swoje pliki bibliotek?

18

Chcę dodać własną bibliotekę do użycia w kompilacji c, ale tak naprawdę nie wiem, gdzie Ubuntu ją przechowuje.

David25
źródło
5
Przechowuje w / usr / lib & / usr / include
karthick87
znalazłem bibliotekę w / usr / include, jak powinienem ją umieścić? czy powinienem po prostu umieścić w pobliżu plik nagłówka i plik ac, czy powinienem napisać razem nagłówek i funkcję w jednym pliku .h?
david25,
3
Biblioteki i nagłówki to różne rzeczy, / usr / include NIE zawiera bibliotek, zawiera nagłówki, które są definicjami funkcji / obiektów dostępnych z bibliotek. Pytanie powinno zostać poprawione, trudno zrozumieć, co próbujesz osiągnąć.
João Pinto,

Odpowiedzi:

11

Opierając się na twoich komentarzach do twojego pytania, myślę, że tak naprawdę pytasz: „Jak zainstalować niestandardową bibliotekę, którą napisałem i gdzie ją umieścić?”

Ogólnie rzecz biorąc, rzeczy zbudowane lokalnie dla innych użytkowników komputera są umieszczane w drzewie / usr / local. Plik nagłówkowy powinien przejść do katalogu / usr / local / include. Skompilowana biblioteka powinna przejść do katalogu / usr / local / lib. Plik .c nie jest częścią biblioteki, jest częścią źródła i nie jest czymś, co zwykle nie jest instalowane na użytek użytkownika końcowego. Będziesz potrzebował dostępu do konta root, aby umieścić pliki w jednej z tych lokalizacji.

Aby zbudować bibliotekę, musisz najpierw zbudować, czy chcesz mieć bibliotekę statyczną czy dynamiczną (współdzieloną). Więcej informacji na temat tworzenia biblioteki współdzielonej można znaleźć w sekcji 3.4, Tworzenie biblioteki współdzielonej pod adresem http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html . (Mają również rekomendacje dotyczące tego, gdzie umieścić rzeczy - większość programistów będzie miała opinię lub trzy :-))

jwernerny
źródło
11

W zależności od biblioteki ubuntu przechowuje swoje biblioteki głównie w trzech lokalizacjach

  1. / lib
  2. / usr / lib
  3. / usr / local / lib

Poniżej znajduje się Standard Hierarchii Systemów Plików

/ lib

Katalog / lib zawiera obrazy z biblioteki współużytkowanej potrzebne do uruchomienia systemu i uruchomienia poleceń w głównym systemie plików, tj. przez pliki binarne w / bin i / sbin.

/ usr / lib

/ usr / lib zawiera pliki obiektowe, biblioteki i wewnętrzne pliki binarne, które nie są przeznaczone do bezpośredniego uruchamiania przez użytkowników ani skrypty powłoki. [22]

Aplikacje mogą korzystać z jednego podkatalogu w katalogu / usr / lib. Jeśli aplikacja korzysta z podkatalogu, wszystkie dane zależne od architektury wykorzystywane wyłącznie przez aplikację muszą zostać umieszczone w tym podkatalogu.

/ usr / local / lib zawiera biblioteki lokalne, tj. jedną specyficzną dla tego systemu, ale nie mogę znaleźć odniesień do / usr / local / lib w FHS, zawiera tylko wyjaśnienie dla / usr / local.

binW
źródło
0

Powinieneś powiedzieć kompilatorowi, gdzie może znaleźć twoją bibliotekę. Zakładając, że ścieżka do Twojej biblioteki to „/path/to/lib/libfoo.a”, możesz skompilować i połączyć swój program „hello.c” w następujący sposób:

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

Nie jest to specyficzne dla Ubuntu, właściwie wszystkie kompilatory C, które znam, obsługują te flagi.

Szczery
źródło
-2

W Ubuntu znajdują się w /usr/include.

Evanson Wachira Wang'ombe
źródło
1
Pliki nagłówkowe są w/usr/include. Rzeczywiste pliki binarne dla biblioteki nie są tam przechowywane. Nagłówki mogą być uważane za część biblioteki, ale muszą być instalowane osobno i służą do kompilacji programów korzystających z biblioteki. Po skompilowaniu programu korzystającego z biblioteki nie potrzebuje już plików nagłówkowych ani z nich nie korzysta.
Eliah Kagan