Obecnie próbuję przenieść aplikację C do systemu AIX i jestem zdezorientowany. Co to są pliki .a i .so i jak są używane podczas budowania / uruchamiania aplikacji?
c
unix
compilation
shared-libraries
.a
Dunc
źródło
źródło
a
RCHIWUM i drugis
haredo
bjectOdpowiedzi:
Biblioteki archiwów (.a) są połączone statycznie, tj. Podczas kompilacji programu z opcją -c w gcc. Tak więc, jeśli nastąpi jakaś zmiana w bibliotece, musisz ponownie skompilować i skompilować kod.
Zaletą .so (obiekt współdzielony) nad biblioteką .a jest to, że są one połączone w czasie wykonywania, tj. Po utworzeniu opcji -o pliku -o w gcc. Jeśli więc wystąpią jakiekolwiek zmiany w pliku .so, nie trzeba ponownie kompilować programu głównego. Ale upewnij się, że twój program główny jest połączony z nowym plikiem .so za pomocą polecenia ln.
Pomoże Ci to zbudować pliki .so. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
Mam nadzieję że to pomoże.
źródło
pic
(kod niezależny od pozycji)?.a są bibliotekami statycznymi. Jeśli używasz kodu przechowywanego w nich, jest on pobierany z nich i osadzany we własnym pliku binarnym. W Visual Studio byłyby to pliki .lib.
.so są bibliotekami dynamicznymi. Jeśli używasz kodu przechowywanego w nich, nie jest pobierany i osadzany we własnym pliku binarnym. Zamiast tego jest to tylko odwołanie, więc plik binarny będzie od nich zależny, a kod z pliku zostanie dodany / załadowany w czasie wykonywania. W Visual Studio / Windows byłyby to pliki .dll (z małymi plikami .lib zawierającymi informacje o łączach).
źródło
.lib
plik dla.dll
nazywa się biblioteką importu.Pliki .a są zwykle bibliotekami, które są statycznie połączone (lub dokładniej archiwizują), a także
są bibliotekami dynamicznie połączonymi.
Aby wykonać port, potrzebujesz kodu źródłowego, który został skompilowany do ich utworzenia, lub równoważnych plików na komputerze z systemem AIX.
źródło
Są używane na etapie łączenia.
.a
pliki są połączone statycznie, a.so
pliki są posortowane tak, że biblioteka jest potrzebna za każdym razem, gdy uruchamiasz exe.Możesz znaleźć miejsce, w którym są przechowywane, przeglądając dowolny z katalogów lib ...
/usr/lib
i/lib
masz większość z nich, a takżeLIBRARY_PATH
zmienną środowiskową.źródło
Wikipedia jest godnym źródłem tych informacji.
Aby dowiedzieć się więcej o plikach biblioteki statycznej, takich jak .a, przeczytaj Statyczny biblioteka
Aby dowiedzieć się więcej na temat plików z bibliotekami współdzielonymi, takich jak .so, przeczytaj Library_ (computing) #Shared_libraries Na tej stronie znajdują się również przydatne informacje w sekcji Nazewnictwo plików .
źródło