2012-03-16 12 views

Odpowiedz

7

Biblioteka statyczna to po prostu zbiór plików obiektów. Jest to zwykle tylko archiwum plików obiektowych ar. Za pomocą ar można wyodrębniać pliki obiektów z biblioteki, dodawać do nich różne pliki obiektów itp.

Celowo, różnica między biblioteką dynamiczną a plikiem obiektu współdzielonego jest celem - system Windows korzysta z bibliotek dynamicznych, Linux używa wspólnych obiektów. Jest trochę więcej różnic, ale nie wiele.

1

Dynamiczne (współdzielone) biblioteki używają kodu PIC - kod będzie działał niezależnie od rzeczywistej fizycznej lokalizacji biblioteki używanej przez wiele plików wykonywalnych w pamięci.

Biblioteki statyczne są łączone w pliku wykonywalnym podczas fazy łączenia w celu utworzenia pliku wykonywalnego.

Zaletą bibliotek dynamicznych jest mniejszy ślad pliku wykonywalnego w pamięci. Zaletą bibliotek statycznych jest to, że możesz po prostu dostarczyć plik wykonywalny bez potrzeby posiadania bibliotek dynamicznych i uruchamiać się trochę szybciej i nie wymaga to wysiłku, aby biblioteka mogła istnieć w dowolnym miejscu w pamięci fizycznej.

+0

Ale moje pytania dotyczą "biblioteki vs obiektu pliku", a nie "statycznej vs dynamicznej lib". Także mój angielski nie jest dobrze napisany :). Tak więc, jeśli to wszystko ze względu na splątane pisanie pytań - powiedz mi, proszę. – Jofsey

+0

Biblioteka to tylko zbiór plików. Po prostu upewnij się, że kolekcja jest udostępniona lub statyczna. Moja odpowiedź brzmi: różnica między udostępnianiem plików a statycznością. –

+1

Twoja odpowiedź jest niepoprawna w prawie każdym szczególe ;-(W systemie Linux ix86 można tworzyć biblioteki współdzielone z kodu innego niż "PIC" .Biblioteki statyczne mogą zawierać kod "-PIC" i mogą być łączone w biblioteki współdzielone. footprint pliku wykonywalnego za pomocą dynamicznego linkowania jest * większy * niż taki, który go nie ma. –

0

Biblioteki Shard oszczędzają miejsce na dysku, jeśli są używane przez więcej niż jeden plik wykonywalny. Jeśli wiele plików wykonywalnych używa tej samej funkcji z biblioteki współdzielonej. są uruchomione, każdy otrzyma swoją własną kopię. Żaden plik wykonywalny na dysku nie będzie zawierał kodu tej funkcji, ale raczej odniesienie do udostępnionej biblioteki.

Powiązane problemy