Chcę dodać własną bibliotekę do użycia w kompilacji c, ale tak naprawdę nie wiem, gdzie Ubuntu ją przechowuje.
Chcę dodać własną bibliotekę do użycia w kompilacji c, ale tak naprawdę nie wiem, gdzie Ubuntu ją przechowuje.
Odpowiedzi:
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 :-))
W zależności od biblioteki ubuntu przechowuje swoje biblioteki głównie w trzech lokalizacjach
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.
Ubuntu przestrzega standardu Hierarchii Systemów Plików ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard ), zwykłe biblioteki aplikacji powinny być przechowywane w katalogu / usr / lib.
Pamiętaj, że tworzenie bibliotek / zarządzanie nimi nie jest trywialnym tematem, powinieneś przeczytać bardziej szczegółową dokumentację, oto fajny samouczek: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
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.
W Ubuntu znajdują się w /usr/include
.
/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.