| AR(1) | Narzędzia programistyczne GNU | AR(1) |
ar - tworzy, modyfikuje i wypakowuje z archiwów
ar [-X32_64] [-]p[mod] [--plugin nazwa] [--target nazwa-bfd] [--output nazwa-katalogu] [--record-libdeps zal-bibl] [--thin] [poz-rel] [numer] archiwum [składowa...]
Program GNU ar tworzy, modyfikuje i wypakowuje pliki z archiwów. Archiwum jest pojedynczym plikiem, zawierającym zbiór innych plików w strukturze, która umożliwia wypakowanie plików oryginalnych (zwanych składowymi archiwum.
Zawartość pierwotnych plików, tryb (uprawnienia), znaczniki czasu, właściciele i grupy są zachowywane w archiwum i mogą być przywrócone przy wypakowaniu.
GNU ar potrafi obsługiwać archiwa, których składowe mają nazwy dowolnej długości; zależnie jednak od konfiguracji ar, można ustawiać limit długości nazwy składowych, dla zachowania kompatybilności z formatami archiwów utrzymywanymi przez inne narzędzia. Jeśli limit istnieje, to jest często limitem 15 znaków (typowy dla formatów związanych z a.out) lub 16 (typowe dla formatów związanych z coff).
ar jest uważany za narzędzie binarne, ponieważ jego archiwa są najczęściej używane jako biblioteki (statyczne) zawierające najczęściej używane funkcje. Ponieważ biblioteki często zależą od innych bibliotek, ar może również zachować zależności biblioteki, jeśli poda się opcję --record-libdeps.
Jeśli poda się modyfikator s, ar będzie tworzył indeks do symboli zdefiniowanych w relokowalnych modułach obiektowych archiwum. Raz utworzony indeks jest odnawiany w archiwum w sytuacji, gdy ar zmieni jego zawartość (bezpieczne dla operacji odnawiania q). Archiwum z takim indeksem przyspiesza linkowanie biblioteki i umożliwia funkcjom z biblioteki wołanie siebie nawzajem bez względu na położenie w archiwum.
Aby wypisać ten indeks, można użyć nm -s lub nm --print-armap. Jeśli archiwum nie ma takiego indeksu, można go dodać przy użyciu innej formy ar, nazywającej się ranlib.
GNU ar może opcjonalnie utworzyć archiwum cienkie, które zawiera indeks symboli i odniesienia do pierwotnych kopii składowych archiwum. Przydaje się to przy budowaniu bibliotek do użycia w lokalnym drzewie budowania, gdzie zakłada się, że obiekty relokowalne pozostaną dostępne, a kopiowanie zawartości każdego z tych obiektów byłoby stratą czasu i miejsca.
Archiwum może być albo cienkie albo normalne. Nie może być obiema tymi postaciami jednocześnie. Po utworzeniu, nie da się zmienić formatu archiwum bez uprzedniego usunięcia go i utworzenia archiwum na nowo.
Archiwa cienkie są również spłaszczone, zatem archiwum cienkie dodane do innego archiwum cienkiego nie zagnieździ się, jak stałoby się to ze zwykłym archiwum. Elementy pierwszego archiwum zostaną w zamian dodane indywidualnie do drugiego archiwum.
Ścieżki do elementów archiwum są przechowywane względem samego archiwum.
GNU ar został zaprojektowany do użycia na dwa sposoby. Można kontrolować jego aktywność za pomocą opcji wiersza poleceń, podobnie jak w różnych odmianach ar na systemach uniksowych albo, jeśli poda się pojedynczą opcję wiersza polecenia -M, można kontrolować go za pomocą skryptu podanego na standardowe wejście, podobnie jak w programie MRI "librarian".
GNU ar umożliwia mieszanie kodu operacji p i flag modyfikacji mod w dowolnej kolejności, w obrębie pierwszego argumentu wiersza poleceń.
Można również rozpocząć pierwszy argument wiersza poleceń kreseczką.
Litera kluczowa p określa, jaką operację wykonać; może być dowolną z następujących, lecz tylko jedną naraz:
Jeśli poda się modyfikator v, to ar wyświetli każdy skasowany moduł.
Kolejność składowych w archiwum może być istotna przy linkowaniu biblioteki z programami, kiedy symbol jest zdefiniowany więcej niż w jednej składowej.
Jeśli nie użyto żadnych modyfikatorów przy "m", wszystkie składowe nazwane w argumentach składowa są przenoszone na koniec archiwum; można również użyć modyfikatorów a, b lub i, aby przenieść je do określonego miejsca.
Jeśli nie podano żadnych argumentów składowych, wypisane zostaną wszystkie pliki archiwum.
Modyfikatory a, b, i i nie wpływają na tę operację; nowe składowe zawsze są dodawane na końcu archiwum.
Modyfikator v powoduje, że ar wypisuje każdy plik, który doda.
Jako że celem tej operacji jest szybkość, implementacje ar nie aktualizowały tablicy symboli archiwum, jeśli taka istniała. Jednak zbyt wiele systemów zakłada, ze tablica symboli jest zawsze aktualna, dlatego GNU ar przebudowuje tablicę nawet przy operacji szybkiego dołączenia.
Uwaga - GNU ar traktuje polecenie qs jako synonim r - zastępuje istniejące pliki w archiwum i dodaje nowe na jego końcu.
Jeśli któryś z plików nazwanych w argumencie składowa... nie istnieje, ar wyświetla komunikat o błędzie i pozostawia składowe archiwum, odpowiadające tej nazwie.
Domyślnie, nowe składowe są dodawane na koniec pliku; można jednak użyć jednego z modyfikatorów a, b lub i, aby zażądać wstawienia względem jakiejś istniejącej składowej.
W tej operacji można użyć modyfikatora v, który wyświetla po jednym wierszu komentarza dla każdego włączonego pliku, uzupełniając ją jedną z liter a lub r, wskazując tak odpowiednio, czy plik został dopisany na końcu (nie skasowano żadnej starej składowej) czy został podmieniony.
Jeśli nie zostanie podany żaden argument składowa, to wypisane zostaną wszystkie pliki archiwum.
Jeśli pod daną nazwą w archiwum (powiedzmy b.a istnieje więcej niż jeden plik (powiedzmy fie), to ar t b.a fie wypisze tylko pierwszy z nich; aby zobaczyć wszystkie, należy zażądać pełnej listy — w naszym przypadku, ar t b.a.
Jeśli nie poda się składowej, wypakowane zostaną wszystkie pliki archiwum.
Plików nie da się wypakować z archiwum cienkiego, istnieją również ograniczenia w stosunku do wypakowywania z archiwów utworzonych za pomocą P: Ścieżki nie mogą być absolutne, nie mogą zawierać "..", a wszystkie podkatalogi ścieżki muszą istnieć. Jeśli wskazane byłoby ominięcie tych ograniczeń, należy podać opcję --output, aby podać katalog wyjściowy.
Za literą kluczową p może znajdować się pewna liczba modyfikatorów (mod), która wtedy określa wariacje zachowania tej operacji:
Jeśli binutils skonfigurowano z --enable-deterministic-archives, tryb ten jest domyślnie włączony. Można go wyłączyć modyfikatorem U, zob. niżej.
ar rcST archiwum.a podkat/plik1 podkat/plik2 plik1
spowoduje zastąpienie "podkat/plik1" przez "plik1" z katalogu bieżącego. Dodanie P pozwoli uniknąć tego zastąpienia.
Uwaga - jeśli archiwum utworzono w sposób deterministyczny np. z modyfikatorem D, to zastąpienia wystąpią zawsze, co uczyni modyfikator u nieefektywnym.
Jest to zachowanie domyślne, o ile binutils nie został skonfigurowany z --enable-deterministic-archives.
Program ar obsługuje również pewne opcje wiersza poleceń, które nie są ani modyfikatorami, ani akcjami, lecz zmieniają jego zachowanie w pewien określony sposób:
Opcja jest dostępna tylko, jeśli program zbudowano z włączoną obsługą wtyczek.
Jeśli nie podano --plugin, lecz obsługa wtyczek została włączona, to ar przechodzi przez pliki w ${libdir}/bfd-plugins w kolejności alfabetycznej i używa pierwszej wtyczki deklarującej dany obiekt.
Proszę zauważyć, że ten katalog przeszukiwania wtyczek nie jest taki, jak używany przez opcję -plugin programu ld. Aby ar używał wtyczki konsolidarora, musi być ona skopiowana do katalogu ${libdir}/bfd-plugins. W przypadku kompilacji powstałych w oparciu o GCC, wtyczka konsolidatora ma nazwę liblto_plugin.so.0.0.0. W przypadku Clanga jest to LLVMgold.so. Wtyczka GCC jest zawsze wstecznie kompatybilna z wcześniejszymi wersjami, więc wystarczy skopiować jej najnowszą wersję.
Uwaga - choć obecność tej opcji wymusza wypakowanie za pomocą x, to wciąż trzeba podać tę opcję w wierszu polecenia.
Opcje w pliku są rozdzielane białymi znakami. Biały znak może wystąpić w opcji, jeśli cała opcja zostanie ujęta w pojedyncze albo podwójne cudzysłowy. Można dodać dowolny znak (włączając w to znak odwrotnego ukośnika), poprzedzając go znakiem odwrotnego ukośnika. Plik może również zawierać dodatkowe opcje @plik - w takim przypadku każda z takich opcji będzie przetwarzana rekurencyjnie.
Copyright (c) 1991-2025 Free Software Foundation, Inc.
Zezwala się na kopiowanie, rozpowszechnianie i/lub modyfikowanie tego dokumentu na warunkach Licencji Wolnej Dokumentacji GNU (GNU Free Documentation License) w wersji 1.3 lub jakiejkolwiek nowszej wersji opublikowanej przez Fundację Wolnego Oprogramowania, przy czym Sekcjami niezmiennymi są „GNU General Public License” i „GNU Free Documentation License”, bez treści przedniej lub tylnej strony okładki. Egzemplarz licencji zamieszczono w sekcji zatytułowanej „GNU Free Documentation License”.
Tłumaczenie niniejszej strony podręcznika: Przemek Borys <pborys@dione.ids.pl> i Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.
| 3 marca 2025 r. | binutils-2.44 |