close

Ar (Unix)

Przejdź do nawigacji Przejdź do wyszukiwania

Archiwizator ( znany również po prostu jako ar ) to narzędzie uniksowe , które utrzymuje grupy plików jako pojedynczy plik archiwum. Ogólnie rzecz biorąc, ar służy do tworzenia i aktualizowania plików bibliotecznych, które są używane przez edytor linków lub linker ; jednak może być używany do tworzenia plików w dowolnym innym celu. ar jest dołączony jako jeden z Binutils GNU .

Tworzenie archiwum

Na przykład, aby utworzyć archiwum z plików class1.o , class2.o , class3.o , należy użyć następującego polecenia:

ar rcs libclass.a class1.o class2.o class3.o

Aby skompilować program zależny od class1.o , class2.o i class3.o można zrobić:

cc główny.c -L. -lklasa

zamiast:

cc główna.c klasa1.o klasa2.o klasa3.o

Opcje -L i -l mówią linkerowi , aby szukał biblioteki " libclass.a " w bieżącym katalogu.

Szczegóły formatu pliku

Format ar nigdy nie został ustandaryzowany, nowoczesne archiwa są oparte na wspólnym formacie z dwoma znanymi wariantami, BSD i GNU .

Historycznie istniały inne warianty, w tym AIX (mały), AIX (duży) i Coherent, które znacznie różniły się od zwykłego formatu.

pliki deb używają wspólnego formatu.

Plik ar zaczyna się od globalnego nagłówka, po którym następuje sekcja nagłówka i danych dla każdego pliku przechowywanego w pliku ar.

Sekcja danych jest wyrównana do 2 bajtów, jeśli miałaby się kończyć w nieparzystym okresie, jako dopełnienie używane jest "\n".

Globalny nagłówek

Globalny nagłówek to pojedyncze pole zawierające magiczny ciąg ASCII „!<arch>”, po którym następuje pojedynczy znak kontrolny LF

Nagłówek pliku

Wspólny format jest następujący.

z pozycji pozycja w górę Nazwa pola Format pola
0 piętnaście Nazwa pliku ASCII
16 27 Data pliku Dziesiętny
28 33 Identyfikator właściciela Dziesiętny
3. 4 39 Identyfikator grupy Dziesiętny
40 47 tryb pliku ósemkowy
48 57 Rozmiar pliku w bajtach Dziesiętny
58 59 magiczny nagłówek '\n

Ze względu na ograniczenia formatu i długości nazw plików, zarówno wersje GNU, jak i BSD opracowały różne metody uzyskiwania rozszerzonych nazw plików.

wariant BSD

BSD ar przechowuje rozszerzone nazwy plików, umieszczając w polu nazwy pliku łańcuch "#1/", po którym następuje długość nazwy pliku i dołączając faktyczną nazwę pliku do nagłówka pliku.

wariant GNU

GNU ar przechowuje kilka rozszerzonych nazw plików w sekcji danych pliku o nazwie "//", do tego rekordu odwołują się przyszłe nagłówki. Nagłówek odwołuje się do rozszerzonej nazwy pliku, przechowując „/”, po którym następuje pozycja dziesiętna na początku nazwy pliku w sekcji danych rozszerzonej nazwy pliku.

GNU ar używa '/' do oznaczenia końca nazwy pliku, co pozwala na używanie spacji bez używania rozszerzonej nazwy pliku.

GNU ar używa specjalnej nazwy pliku "/ ", aby zaznaczyć, że następne wejście zawiera tablicę wyszukiwania symboli, która jest używana w bibliotekach ar w celu przyspieszenia dostępu

Zobacz także

Linki zewnętrzne