Ar (Unix)
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
- .deb
- formaty plików
- UNIX
- Dodatek: Lista programów uniksowych