Co to są pliki .a i .so?


Odpowiedzi:


483

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.


2
czy którykolwiek z nich dotyczy pic(kod niezależny od pozycji)?
transang

213

.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).


cześć, czy jest jakaś opcja dekompilacji pliku .so w kodzie c / c ++.?
Jishant,


Mały .libplik dla .dllnazywa się biblioteką importu.
Programista zorientowany na pieniądze

13

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.


Jak zbudować aplikację, aby korzystać z plików .so?
Dunc

Istnieje wiele doskonałych referencji dotyczących tworzenia obu typów bibliotek i łączenia z nimi w Internecie. Google to twój przyjaciel.
David Pointer

@ Dunc - Istnieje kilka sposobów. Czy masz plik makefile? Zwykle polecenie, które składa cały program (a zatem wywołuje konsolidator), określa miejsca, w których należy szukać plików bibliotek za pomocą opcji -L / dir / dir1 /.../, a także może jawnie nazywać biblioteki za pomocą opcji -lname. Przekonasz się, że rzeczywista nazwa to libname.a lub libname.so. Linker może następnie dowiedzieć się, co zrobić, jeśli jest to racjonalnie normalny program. Ale nadal masz problem z utworzeniem lub znalezieniem pliku .so. Czy masz kod źródłowy, aby go zbudować, lub bibliotekę AIX?
żarówka

10

Są używane na etapie łączenia. .apliki są połączone statycznie, a .sopliki 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/libi /libmasz większość z nich, a także LIBRARY_PATHzmienną środowiskową.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.