.aPlik jest biblioteka statyczna, podczas gdy .soplik jest udostępniony obiekt (dynamiczny) biblioteka podobna do DLL w systemie Windows. Istnieje kilka szczegółowych informacji na temat różnic między tymi dwoma na tej stronie .
.amoże być uwzględniony tylko jako część programu podczas kompilacji. .somożna „importować” podczas ładowania programu.
LawrenceC
2
co oznacza .a?
hfrmobile
2
@hfrmobile A oznacza archiwum - biblioteka statyczna to zbiór plików obiektowych utworzonych za pomocą arnarzędzia. Więcej informacji tutaj
ajk
28
W dalszej kolejności plik .a jest archiwum „ar”. Podobnie jak archiwum tar, przechowuje pliki .o lub pliki obiektów, pozwalając między innymi na ich wyciągnięcie z archiwum i połączenie z programem. Możesz użyć ar do przechowywania innych plików, jeśli chcesz.
Możesz uzyskać listę członków pliku ar z parametrem -t, na przykład:
ar -t /usr/lib/libc.a
Plik .so jest plikiem „obiektu współdzielonego” i zawiera o wiele więcej informacji dostępnych dla linkera, dzięki czemu członkowie mogą zostać jak najszybciej połączeni z programem ładującym.
Na przykład spróbuj:
objdump -T /lib/libc-2.11.1.so
(lub dowolną wersję libc.so, którą masz w katalogu / lib). Zauważ, że plik .so może również zawierać skrypt łączący, kierujący go do znalezienia pliku w innym miejscu, lub użyć czegoś innego.
Co ciekawe, plik .so może być także pełnoprawnym programem. Na przykład próba uruchomienia /lib/libc.so.6 . (Niestety, ta ostatnia część nie wydaje się działać na bardziej nowoczesnych systemach. Nie jest to wielka strata.)
Literówka masz na myśli pisać ar -t /usr/lib/libc.a. W rzeczywistości -nie wydaje się to konieczne w tym przypadku. Również /lib/libc.so.6.drukuje tylko niektóre dane wyjściowe. Nie wiem czy nazwałbym to full fledged program.
Faheem Mitha
1
Jest to pełnoprawny program w tym sensie, że ma główny symbol exec do znalezienia.
Hack Saw
2
Możesz także uruchomić ldd.so, a pokaże ci, jakich innych bibliotek używa. Statyczny zwróci komunikat z informacją, że nie jest to biblioteka dynamiczna.
Odpowiedzi:
.a
Plik jest biblioteka statyczna, podczas gdy.so
plik jest udostępniony obiekt (dynamiczny) biblioteka podobna do DLL w systemie Windows. Istnieje kilka szczegółowych informacji na temat różnic między tymi dwoma na tej stronie .źródło
.a
może być uwzględniony tylko jako część programu podczas kompilacji..so
można „importować” podczas ładowania programu.ar
narzędzia. Więcej informacji tutajW dalszej kolejności plik .a jest archiwum „ar”. Podobnie jak archiwum tar, przechowuje pliki .o lub pliki obiektów, pozwalając między innymi na ich wyciągnięcie z archiwum i połączenie z programem. Możesz użyć ar do przechowywania innych plików, jeśli chcesz.
Możesz uzyskać listę członków pliku ar z parametrem -t, na przykład:
Plik .so jest plikiem „obiektu współdzielonego” i zawiera o wiele więcej informacji dostępnych dla linkera, dzięki czemu członkowie mogą zostać jak najszybciej połączeni z programem ładującym.
Na przykład spróbuj:
(lub dowolną wersję libc.so, którą masz w katalogu / lib). Zauważ, że plik .so może również zawierać skrypt łączący, kierujący go do znalezienia pliku w innym miejscu, lub użyć czegoś innego.
Co ciekawe, plik .so może być także pełnoprawnym programem. Na przykład próba uruchomienia /lib/libc.so.6 . (Niestety, ta ostatnia część nie wydaje się działać na bardziej nowoczesnych systemach. Nie jest to wielka strata.)
źródło
ar -t /usr/lib/libc.a
. W rzeczywistości-
nie wydaje się to konieczne w tym przypadku. Również/lib/libc.so.6.
drukuje tylko niektóre dane wyjściowe. Nie wiem czy nazwałbym tofull fledged program
.ldd
.so, a pokaże ci, jakich innych bibliotek używa. Statyczny zwróci komunikat z informacją, że nie jest to biblioteka dynamiczna.