.h #pliki nagłówkowe
.c #pliki źródłowe
lib*.a #pliki bibliotek statycznych, kompilator umieszcza pliki bezpośrednio w pliku wykonywalnym za pomocą archiwizatora ar
.so #pliki bibliotek dzielonych, definicje dostępu znajdują się w /etc/ld.so.conf, do załadowania możemy użyć zmiennej $LD_LIBRARY_PATH, kompilator rejestruje jedynie informacje o bibliotece wewnątrz pliku wykonywalnego, która jest następnie dołączana przez linker dynamiczny podczas wykonania programu bezpośrednio przed wykonaniem funkcji main(), jeśli program nei może znaleźć tzw “shared object”, natychmiast zatrzymuje wykonanie z błędem,
wszystkie programy używają jednej dzielonej biblioteki przechowywanej w pamięci
configure #skrypt tworzący plik Makefile i zależności na podstawie Makefile.in
make clean #usuwa pliki obiektów i bibliotek skompilowanych przez make
make distclean #j.w. wraz ze skryptem stworzonym przez configure
make install #kopiuje skompilowane pliki do odpowiednich ścieżek
make uninstall #usuwa pliki skopiowane przez make install
ldd [prog] #pokazuje zależności shared libraries niezbędnych do uruchomienia [prog]
nm [file].o #pokazuje listę symboli do których odnosi się plik obiektu lub plik wykonywalny
nm -guA *.o | grep [unresolved_symbol]
nm -gA /usr/lib/* | grep [unresolved_symbol]
strace [prog] #pokazuje co dzieje się z programem
strace -p [pid] #dopina program strace pod konkretny pid
strace -p [pid] -c #zlicza tzw. wait-y programu
Ostatnie komentarze