ar - instrukcja obsługi, opcje, przykłady poleceń


NAZWA

ar - tworzyć, modyfikować i wyodrębniać z archiwów

STRESZCZENIE

ar [-X32_64] [-]p[mod] [--plugin name] [--target bfdname] [--output dirname] [--record-libdeps libdeps] [--thin] [relpos] [count] archive [member...]

OPIS

Program GNU ar tworzy, modyfikuje i rozpakowuje archiwa. Archiwum to pojedynczy plik zawierający kolekcję innych plików w strukturze, która umożliwia odzyskanie oryginalnych pojedynczych plików (nazywanych członkami archiwum).

Oryginalna zawartość plików, tryb (uprawnienia), znacznik czasu, właściciel i grupa są zachowywane w archiwum i można je przywrócić podczas rozpakowywania.

GNU ar może utrzymywać archiwa, których członkowie mają nazwy dowolnej długości; jednak w zależności od tego, jak ar jest skonfigurowany w twoim systemie, może zostać nałożony limit długości nazwy członka w celu zapewnienia zgodności z formatami archiwów obsługiwanymi przez inne narzędzia. Jeśli istnieje, limit wynosi często 15 znaków (typowe dla formatów związanych z a.out) lub 16 znaków (typowe dla formatów związanych z kawą).

ar jest uważany za narzędzie binarne, ponieważ archiwa tego typu są najczęściej używane jako biblioteki zawierające często potrzebne podprogramy. Ponieważ biblioteki często zależą od innych bibliotek, ar może również rejestrować zależności biblioteki, gdy określona jest opcja --record-libdeps.

ar tworzy indeks do symboli zdefiniowanych w relokowalnych modułach obiektowych w archiwum, gdy określisz modyfikator s. Po utworzeniu ten indeks jest aktualizowany w archiwum za każdym razem, gdy ar dokonuje zmiany w jego zawartości (z wyjątkiem operacji aktualizacji q). Archiwum z takim indeksem przyspiesza łączenie się z biblioteką i pozwala procedurom w bibliotece dzwonić do siebie bez względu na ich umiejscowienie w archiwum.

Możesz użyć nm -s lub nm --print-armap, aby wyświetlić tę tabelę indeksu. Jeśli w archiwum brakuje tabeli, można użyć innej formy ar o nazwie ranlib, aby dodać samą tabelę.

GNU ar może opcjonalnie utworzyć cienkie archiwum, które zawiera indeks symboli i odniesienia do oryginalnych kopii plików składowych archiwum. Jest to przydatne do budowania bibliotek do użytku w lokalnym drzewie kompilacji, w którym oczekuje się, że obiekty, które można przenieść, pozostaną dostępne, a kopiowanie zawartości każdego obiektu spowodowałoby tylko stratę czasu i miejsca.

Archiwum może być cienkie lub normalne. Nie może być jednocześnie jednym i drugim. Po utworzeniu archiwum nie można zmienić jego formatu bez uprzedniego usunięcia go, a następnie utworzenia nowego archiwum w jego miejsce.

Cienkie archiwa są również spłaszczone, więc dodanie jednego cienkiego archiwum do innego cienkiego archiwum nie zagnieżdża go, tak jak miałoby to miejsce w przypadku zwykłego archiwum. Zamiast tego elementy pierwszego archiwum są dodawane indywidualnie do drugiego archiwum.

Ścieżki do elementów archiwum są przechowywane względem samego archiwum.

GNU ar został zaprojektowany tak, aby był kompatybilny z dwoma różnymi udogodnieniami. Możesz kontrolować jego aktywność za pomocą opcji wiersza poleceń, takich jak różne odmiany ar w systemach Unix; lub, jeśli określisz pojedynczą opcję wiersza poleceń -M, możesz sterować nią za pomocą skryptu dostarczonego przez standardowe wejście, takiego jak program bibliotekarza MRI.

OPCJE

GNU ar pozwala mieszać kod operacji p i flagi modyfikujące mod w dowolnej kolejności, w pierwszym argumencie wiersza poleceń.

Jeśli chcesz, możesz rozpocząć pierwszy argument wiersza poleceń myślnikiem.

Litera kluczowa p określa, jaką operację należy wykonać; może to być dowolna z poniższych opcji, ale należy podać tylko jedną z nich:

  1. Usuń moduły z archiwum. Określ nazwy modułów do usunięcia jako członek...; archiwum pozostaje nienaruszone, jeśli nie określisz żadnych plików do usunięcia. Jeśli określisz modyfikator v, ar wyświetli listę każdego usuwanego modułu.

  2. Użyj tej operacji, aby przenieść członków w archiwum. Kolejność członków w archiwum może mieć wpływ na sposób łączenia programów przy użyciu biblioteki, jeśli symbol jest zdefiniowany w więcej niż jednym elemencie. Jeśli z m nie zostaną użyte żadne modyfikatory, wszyscy członkowie, których wymieniłeś w argumentach member, zostaną przeniesieni na koniec archiwum; zamiast tego możesz użyć modyfikatorów a, b lub i, aby przenieść je w określone miejsce.

  3. Wydrukuj określonych członków archiwum do standardowego pliku wyjściowego. Jeśli określono modyfikator v, pokaż nazwę elementu przed skopiowaniem jego zawartości na standardowe wyjście. Jeśli nie podasz żadnych argumentów member, wydrukowane zostaną wszystkie pliki w archiwum.

  4. Szybkie dołączanie; Historycznie dodaj pliki member... na końcu archiwum, bez sprawdzania, czy nie zostały zastąpione. Modyfikatory a, b i i nie wpływają na tę operację; nowi członkowie są zawsze umieszczani na końcu archiwum. Modyfikator v powoduje, że ar wyświetla listę każdego pliku, który jest dołączany. Ponieważ celem tej operacji jest szybkość, implementacje ar mają opcję nie aktualizowania tablicy symboli archiwum, jeśli taka istnieje. Jednak zbyt wiele różnych systemów zakłada, że tablice symboli są zawsze aktualne, więc GNU ar odbuduje tablicę nawet po szybkim dodaniu. Uwaga - GNU ar traktuje polecenie qs jako synonim r - zastępując już istniejące pliki w archiwum i dołączając nowe na końcu.

  5. Wstaw pliki member... do archiwum (z zastępstwem). Ta operacja różni się od q tym, że wszyscy wcześniej istniejący członkowie są usuwani, jeśli ich nazwy pasują do dodawanych. Jeśli jeden z plików o nazwie w member... nie istnieje, ar wyświetla komunikat o błędzie i pozostawia w spokoju wszystkich istniejących członków archiwum pasujących do tej nazwy. Domyślnie nowi członkowie są dodawani na końcu pliku; ale możesz użyć jednego z modyfikatorów a, b lub i, aby poprosić o miejsce w stosunku do istniejącego członka. Modyfikator v używany w tej operacji wywołuje linię wyjścia dla każdego wstawionego pliku wraz z jedną z liter a lub r wskazującą, czy plik został dołączony (żaden stary element nie został usunięty) lub zastąpiony.

  6. Dodaj indeks do archiwum lub zaktualizuj go, jeśli już istnieje. Zauważ, że ta komenda jest wyjątkiem od reguły, że może być tylko jedna litera komendy, ponieważ można jej użyć jako komendy lub modyfikatora. W obu przypadkach robi to samo.

  7. Wyświetl tabelę z listą zawartości archiwum lub plików wymienionych w member... znajdujących się w archiwum. Zwykle wyświetlana jest tylko nazwa elementu, ale jeśli określony jest modyfikator O, wyświetlane jest również odpowiednie przesunięcie elementu. Wreszcie, aby zobaczyć tryby (uprawnienia), sygnaturę czasową, właściciela, grupę i rozmiar, należy uwzględnić modyfikator v. Jeśli nie określisz członka, zostaną wyświetlone wszystkie pliki w archiwum. Jeśli w archiwum znajduje się więcej niż jeden plik o tej samej nazwie (np. fie) (np. b.a), ar t b.a fie wyświetla listę tylko pierwsza instancja; aby zobaczyć je wszystkie, musisz poprosić o pełną listę – w naszym przykładzie ar t b.a.

  8. Wyodrębnij członków (o nazwie członek) z archiwum. Możesz użyć modyfikatora v w tej operacji, aby zażądać, aby ar wyświetlał każdą nazwę podczas jej wyodrębniania. Jeśli nie określisz członka, wszystkie pliki w archiwum zostaną rozpakowane. Plików nie można wypakować z cienkiego archiwum, a wypakowywanie z archiwów utworzonych za pomocą P podlega ograniczeniom: Ścieżki nie mogą być bezwzględne, nie mogą zawierać .. i żadnych podkatalogi w ścieżkach muszą istnieć. Jeśli chcesz uniknąć tych ograniczeń, użyj opcji --output, aby określić katalog wyjściowy.

Szereg modyfikatorów (mod) może następować bezpośrednio po literze kluczowej p, aby określić warianty zachowania operacji:

  1. Dodaj nowe pliki za istniejącym członkiem archiwum. Jeśli użyjesz modyfikatora a, nazwa istniejącego elementu archiwum musi być przedstawiona jako argument relpos przed specyfikacją archive.

  2. Dodaj nowe pliki przed istniejącym członkiem archiwum. Jeśli użyjesz modyfikatora b, nazwa istniejącego elementu archiwum musi być przedstawiona jako argument relpos przed specyfikacją archive. (tak samo jak i).

  3. Utwórz archiwum. Podane archiwum jest zawsze tworzone, jeśli nie istniało, gdy zażądasz aktualizacji. Ale ostrzeżenie jest wydawane, chyba że wcześniej określisz, że spodziewasz się go utworzyć, używając tego modyfikatora.

  1. Działaj w trybie deterministycznym. Podczas dodawania plików i indeksu archiwum używaj zera dla identyfikatorów UID, GID, znaczników czasu i używaj spójnych trybów plików dla wszystkich plików. Kiedy ta opcja jest używana, jeśli ar jest używany z identycznymi opcjami i identycznymi plikami wejściowymi, wielokrotne przebiegi utworzą identyczne pliki wyjściowe niezależnie od właścicieli, grup, trybów plików lub czasów modyfikacji plików wejściowych. Jeśli binutils skonfigurowano z opcją --enable-deterministic-archives, ten tryb jest domyślnie włączony. Można go wyłączyć za pomocą modyfikatora U poniżej.

  1. Skróć nazwiska w archiwum. GNU ar normalnie zezwala na nazwy plików o dowolnej długości. Spowoduje to utworzenie archiwów, które nie są kompatybilne z natywnym programem ar w niektórych systemach. Jeśli jest to problem, modyfikator f może być użyty do obcięcia nazw plików podczas umieszczania ich w archiwum.

  1. Wstaw nowe pliki przed istniejącym członkiem archiwum. Jeśli użyjesz modyfikatora i, nazwa istniejącego członka archiwum musi być przedstawiona jako argument relpos przed specyfikacją archive. (tak samo jak b).

  1. Określ zależności tej biblioteki. Zależności muszą następować bezpośrednio po tym znaku opcji, muszą używać tej samej składni co wiersz poleceń konsolidatora i muszą być określone w jednym argumencie. To znaczy, jeśli potrzebnych jest wiele elementów, należy je podać w cudzysłowach, aby utworzyć pojedynczy argument wiersza poleceń. Na przykład L -L/usr/local/lib -lmydep1 -lmydep2

  1. Używa parametru liczba. Jest to używane, jeśli w archiwum znajduje się wiele wpisów o tej samej nazwie. Wyodrębnij lub usuń wystąpienie count podanej nazwy z archiwum.

  1. Zachowaj oryginalne daty członków podczas ich wyodrębniania. Jeśli nie określisz tego modyfikatora, pliki wypakowane z archiwum zostaną opatrzone datą wypakowania.

  1. Wyświetl przesunięcia prętów wewnątrz archiwum. Używaj razem z opcją t.

  2. Używaj pełnej nazwy ścieżki podczas dopasowywania lub zapisywania nazw w archiwum. Archiwa utworzone z pełnymi nazwami ścieżek nie są zgodne z POSIX i dlatego mogą nie działać z narzędziami innymi niż aktualne narzędzia GNU. Modyfikowanie takich archiwów za pomocą GNU ar bez użycia P spowoduje usunięcie pełnych nazw ścieżek, chyba że archiwum jest archiwum uproszczonym. Zauważ, że P może być przydatne podczas dodawania plików do cienkiego archiwum, ponieważ r bez P ignoruje ścieżkę przy wyborze elementu do zastąpienia. Zatem ar rcST archive.a subdir/file1 subdir/file2 file1 spowoduje zastąpienie pierwszego podkatalog/plik1 przez plik1 z bieżącego katalogu. Dodanie P uniemożliwi to zastąpienie.

  1. Zapisz indeks plików obiektowych w archiwum lub zaktualizuj istniejący, nawet jeśli w archiwum nie wprowadzono żadnych innych zmian. Możesz użyć tej flagi modyfikatora w dowolnej operacji lub samodzielnie. Uruchomienie ar s na archiwum jest równoznaczne z uruchomieniem na nim ranlib.

  1. Nie generuj archiwalnej tablicy symboli. Może to przyspieszyć budowanie dużej biblioteki w kilku krokach. Powstałe archiwum nie może być używane z konsolidatorem. Aby zbudować tablicę symboli, musisz pominąć modyfikator S przy ostatnim wykonaniu ar lub uruchomić ranlib w archiwum .

  2. Przestarzały alias dla --thin. T nie jest zalecane, ponieważ w wielu implementacjach ar T ma inne znaczenie, określone przez X/Open System Interface.

  1. Zwykle ar r... wstawia wszystkie wymienione pliki do archiwum. Jeśli chcesz wstawić tylko z wymienionych plików nowsze niż istniejące pliki o tych samych nazwach, użyj tego modyfikatora. Modyfikator u jest dozwolony tylko dla operacji r (zamień). W szczególności nie jest dozwolona kombinacja qu, ponieważ sprawdzenie znaczników czasu spowodowałoby utratę przewagi szybkości operacji q.

  1. Nie działaj w trybie deterministycznym. Jest to odwrotność powyższego modyfikatora D: dodane pliki i indeks archiwum otrzymają swoje rzeczywiste wartości UID, GID, znacznik czasu i tryb pliku. Jest to ustawienie domyślne, chyba że binutils zostało skonfigurowane z --enable-deterministic-archives.

  1. Ten modyfikator żąda pełnej wersji operacji. Wiele operacji wyświetla dodatkowe informacje, takie jak przetworzone nazwy plików, gdy dodany jest modyfikator v.

  1. Ten modyfikator pokazuje numer wersji ar.

Program ar obsługuje również niektóre opcje wiersza poleceń, które nie są ani modyfikatorami, ani akcjami, ale które zmieniają jego zachowanie w określony sposób:

--help

Wyświetla listę opcji wiersza poleceń obsługiwanych przez ar, a następnie kończy działanie.

--version

Wyświetla informacje o wersji ar, a następnie kończy działanie.

-X32_64

ar ignoruje początkową opcję zapisaną jako -X32_64, aby zapewnić kompatybilność z systemem AIX. Zachowanie wywołane tą opcją jest domyślne dla GNU ar. ar nie obsługuje żadnej z pozostałych opcji -X; w szczególności nie obsługuje -X32, która jest domyślna dla AIX ar.

--plugin name

Opcjonalny przełącznik wiersza poleceń --plugin nazwa powoduje, że ar ładuje wtyczkę o nazwie nazwa, która dodaje obsługę więcej formatów plików, w tym pliki obiektowe z informacjami o optymalizacji czasu łącza. Ta opcja jest dostępna tylko wtedy, gdy zestaw narzędzi został zbudowany z włączoną obsługą wtyczek. Jeśli nie podano --plugin, ale włączono obsługę wtyczek, ar przegląda pliki w $ {libdir}/bfd-plugins w porządku alfabetycznym i pierwsza wtyczka, która twierdzi, że dany obiekt jest używana. Pamiętaj, że ten katalog wyszukiwania wtyczek nie jest tym, którego używa opcja -plugin ld. Aby ar używał wtyczki łączącej, należy ją skopiować do katalogu $ {libdir}/bfd-plugins. W przypadku kompilacji opartych na GCC wtyczka łącząca nazywa się liblto_plugin.so.0.0.0. Dla kompilacji opartych na Clang nazywa się LLVMgold.so. Wtyczka GCC jest zawsze wstecznie kompatybilna z wcześniejszymi wersjami, więc wystarczy skopiować najnowszą.

--target target

Opcjonalny przełącznik wiersza poleceń --target bfdname określa, że elementy archiwum mają format kodu wynikowego inny niż domyślny format systemu. Widzieć

--output dirname

Opcji --output można użyć do określenia ścieżki do katalogu, do którego mają zostać rozpakowane elementy archiwum. Jeśli ta opcja nie zostanie określona, zostanie użyty bieżący katalog. Uwaga - chociaż obecność tej opcji implikuje operację ekstrakcji x, ta opcja nadal musi być uwzględniona w wierszu poleceń.

--record-libdeps libdeps

Opcja --record-libdeps jest identyczna z modyfikatorem l, tylko obsługiwana w długiej formie.

--thin

Ustaw określone archiwum jako cienkie archiwum. Jeśli już istnieje i jest zwykłym archiwum, istniejący członkowie muszą znajdować się w tym samym katalogu co archiwum.

  1. Odczytaj opcje wiersza poleceń z pliku. Odczytane opcje są wstawiane w miejsce oryginalnej opcji @plik. Jeśli plik nie istnieje lub nie można go odczytać, wówczas opcja zostanie potraktowana dosłownie, a nie usunięta. Opcje w pliku są oddzielone spacjami. Znak spacji może być zawarty w opcji poprzez ujęcie całej opcji w pojedynczy lub podwójny cudzysłów. Dowolny znak (w tym ukośnik odwrotny) może zostać uwzględniony poprzez poprzedzenie znaku, który ma zostać uwzględniony, ukośnikiem odwrotnym. Sam plik może zawierać dodatkowe opcje @pliku; wszelkie takie opcje będą przetwarzane rekurencyjnie.

ZOBACZ TEŻ

nm (1), ranlib (1), and the Info entries for binutils.

PRAWA AUTORSKIE

Prawa autorskie (c) 1991-2023 Fundacja Wolnego Oprogramowania, Inc.

Udziela się pozwolenia na kopiowanie, rozpowszechnianie i/lub modyfikowanie tego dokumentu zgodnie z warunkami licencji GNU Free Documentation License, w wersji 1.3 lub dowolnej nowszej opublikowanej przez Free Software Foundation; bez Części Niezmiennych, bez Treści na Przedniej Okładce i bez Treści na Tylnej Okładce. Kopia licencji znajduje się w sekcji zatytułowanej Licencja GNU Wolnej Dokumentacji.