C/Biblioteki własne

Z Wikibooks, biblioteki wolnych podręczników.
< C
Skocz do: nawigacja, szukaj

Tworzenie własnej biblioteki statycznej[edytuj]

  • stworzenie plików źródłowych : c i pliku nagłówkowego[1]
  • kompilacja plików źródłowych[2] do pliku objektowego (.so), za pomocą CMAKE
  • utwórz plik archiwum libmylib.a za pomocą ar
  • skopiuj bibliotekę do standardowego katalogu bibliotek : /usr/lib
  • opcja : dodaj mylib.pc[3] do /usr/local/lib/pkgconfig/ w celu rozpoznawania przez pkg-config
  • zaimportuj bibliotekę do swojego programu :
    • w kodzie programu dodaj #include<mylib.h>
    • dodaj opcje kompilatora : gcc -lmylib
  • opublikuj kod na serwerze , np github lub gitlab


Przykład :[4]

gcc -o library.o library.c
gcc -o someother.o someother.c
ar a libmylib.a library.o someother.o
gcc  c.c -lmylib



Katalogi :

  • /usr/local/include/mylib/ dla plikóœ nagłówkowych
  • /usr/local/lib/libmylib.a ( lub /usr/local/lib/libmylib.so dla bibliotek dynamicznych)


Jak sprawdzić listę funkcji w skompilowanej bibliotece ?[edytuj]

Za pomocą nm :[5]

nm -D /usr/lib/libgme.so.0

Fragment przykładowego wyniku :

                 U __assert_fail
000000000024c110 A __bss_start
                 U cos
                 w __cxa_finalize
                 U __cxa_guard_acquire
                 U __cxa_guard_release
                 U __cxa_pure_virtual
000000000024c110 A _edata
000000000024c1c0 A _end
                 U fclose
                 U feof
00000000000382a8 T _fini
                 U floor
                 U fmod


Ścieżka wyszukiwania[edytuj]

Mamy do wyboru instalację w katalogach :

Domyślna standardowa lokalizacja :

  • /usr/local/lib ( pliki binarne )
  • /usr/local/include ( pliki nagłówkowe )

Niestandardowo :

C_INCLUDE_PATH=/your_include_path 
export C_INCLUDE_PATH

oraz dodanie do pliku ~/.bash_profile w przypadki BASH


oraz dodanie katalogu z plikiem binarnym :

-L

Źródła[edytuj]

  1. stackoverflow questions : how-can-i-create-and-use-my-own-static-library-in-c
  2. stackoverflow questions : how-to-compile-library-on-c-using-gcc
  3. stackoverflow questions  : best-practices-on-my-library-coded-in-c
  4. http://stackoverflow.com/questions/33820287/using-header-files-in-c
  5. stackoverflow question : is-there-any-way-to-list-all-functions-in-a-c-library