table of contents
- bookworm-backports 1:4.26.3.1-3~bpo12+1
- testing 1:4.26.3.1-3
- unstable 1:4.27.0-1
AR(1) | Narzędzia programistyczne GNU | AR(1) |
NAZWA¶
ar - tworzy, modyfikuje i wypakowuje z archiwów
SKŁADNIA¶
ar [-X32_64] [-]p[mod] [--plugin nazwa] [--target nazwa-bfd] [--output nazwa-katalogu] [--record-libdeps zal-bibl] [--thin] [poz-rel] [numer] archiwum [składowa...]
OPIS¶
The GNU ar program creates, modifies, and extracts from archives. An archive is a single file holding a collection of other files in a structure that makes it possible to retrieve the original individual files (called members of the archive).
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 can maintain archives whose members have names of any length; however, depending on how ar is configured on your system, a limit on member-name length may be imposed for compatibility with archive formats maintained with other tools. If it exists, the limit is often 15 characters (typical of formats related to a.out) or 16 characters (typical of formats related to 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 can optionally create a thin archive, which contains a symbol index and references to the original copies of the member files of the archive. This is useful for building libraries for use within a local build tree, where the relocatable objects are expected to remain available, and copying the contents of each object would only waste time and space.
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 is designed to be compatible with two different facilities. You can control its activity using command-line options, like the different varieties of ar on Unix systems; or, if you specify the single command-line option -M, you can control it with a script supplied via standard input, like the MRI "librarian" program.
OPCJE¶
GNU ar allows you to mix the operation code p and modifier flags mod in any order, within the first command-line argument.
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:
- d
- Kasuje moduły z archiwum. Nazwy modułów do
usunięcia należy podać jako
składowe...; archiwum pozostanie nietknięte,
jeśli nie poda się plików do skasowania.
Jeśli poda się modyfikator v, to ar wyświetli każdy skasowany moduł.
- m
- Operacja służy do przemieszczenia składowych
archiwum.
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.
- p
- Wypisuje określone składowe archiwum na standardowe
wyjście. Jeśli został podany modyfikator v, to
przed skopiowaniem zawartości składowej na standardowym
wyjściu, pokazuje jego nazwę.
Jeśli nie podano żadnych argumentów składowych, wypisane zostaną wszystkie pliki archiwum.
- q
- Szybkie dołączenie; historycznie dodawało
składowe... do końca archiwum, bez sprawdzania
podmieniania.
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.
Since the point of this operation is speed, implementations of ar have the option of not updating the archive's symbol table if one exists. Too many different systems however assume that symbol tables are always up-to-date, so GNU ar will rebuild the table even with a quick append.
Note - GNU ar treats the command qs as a synonym for r - replacing already existing files in the archive and appending new ones at the end.
- r
- Wstawia pliki składowe... do archiwum (z
podmienianiem). Ta operacja różni się od
q tym, że wszystkie istniejące składowe
zostaną usunięte, jeśli ich nazwy odpowiadają
nazwom dodawanym.
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.
- s
- Dodaje indeks do archiwum lub aktualizuje go, jeśli już istnieje. To polecenie jest wyjątkiem od reguły, że można podać tylko jedną literę polecenia, ponieważ można go stosować jako polecenie lub modyfikator. W obu przypadkach działa tak samo.
- t
- Wypisuje w formie tabelarycznej zawartość
archiwum lub tych z plików, wymienionych w argumencie
składowe, które są obecne w archiwum.
Normalnie wyświetlana jest tylko nazwa składowej, natomiast
jeśli poda się modyfikator O, wyświetlane jest
również odpowiednie przesunięcie (offset)
składowej. Aby zapoznać się z trybami
(uprawnieniami), znacznikiem czasowym, właścicielem,
grupą i rozmiarem, należy podać modyfikator v.
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.
- x
- Wypakowuje składowe (o nazwie składowa) z
archiwum. Aby zażądać, by ar wypisał
każdą nazwę podczas jej wypakowywania, można
użyć modyfikatora v.
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:
- a
- Dodaje nowe pliki za istniejącą składową archiwum. Jeśli używa się tego modyfikatora, to przed podaniem archiwum, należy wskazać nazwę istniejącej składowej archiwum argumentem poz-rel
- b
- Dodaje nowe pliki przed istniejącą składową archiwum. Jeśli używa się tego modyfikatora, to przed podaniem archiwum, należy wskazać nazwę istniejącej składowej archiwum argumentem poz-rel. (Równoważne i)
- c
- Tworzy archiwum. Podane archiwum jest zawsze tworzone jeżeli nie istniało, a zażąda się odnowienia (update). Wypisywane jest jednak wtedy ostrzeżenie, chyba że poda się z góry, że chce się je utworzyć, używając tego modyfikatora.
- D
- Działa w trybie deterministycznym. Przy dodawaniu
plików i indeksu archiwum używa zera jako
identyfikatorów użytkowników, grup, znaczników
czasowych oraz używa stałych trybów plików dla
wszystkich plików. Przy korzystaniu z tej opcji, jeśli
użyje się programu ar z identycznymi opcjami i
identycznymi plikami wejściowymi, kolejne przebiegi utworzą
identyczne pliki wyjściowe, niezależnie od
właścicieli, grup, trybów plików i
czasów modyfikacji plików wejściowych.
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.
- f
- Skraca nazwy w archiwum. GNU ar normalnie pozwala plikom mieć dowolną długość. Powoduje to, że archiwa mogą być niekompatybilne z natywnymi programami ar niektórych innych systemów. Jeśli jest to istotne, można wykorzystać modyfikator f, który umożliwia skracanie nazw plików podczas wstawiania ich do archiwum.
- i
- Wstawia nowe pliki przed istniejącą składową archiwum. Jeśli używa się tego modyfikatora, to przed podaniem archiwum, należy wskazać nazwę istniejącej składowej archiwum argumentem poz-rel. (Równoważne b)
- l
- Specify dependencies of this library. The dependencies must immediately follow this option character, must use the same syntax as the linker command line, and must be specified within a single argument. I.e., if multiple items are needed, they must be quoted to form a single command line argument. For example L "-L/usr/local/lib -lmydep1 -lmydep2"
- N
- Używa parametru numer. Jest on stosowany, gdy występuje wiele wpisów z tą samą nazwą w archiwum. Wówczas wypakowane lub usunięte zostanie wystąpienie podanej nazwy o zadanym numerze z archiwum.
- o
- Chroni oryginalne daty składowych przy wypakowywaniu. Jeśli nie poda się tego modyfikatora, pliki wypakowane z archiwum będą oznaczone czasem z chwili wypakowania.
- O
- Wypisuje przesunięcia (offsety) wewnątrz archiwum. Należy używać łącznie z opcją t.
- P
- Use the full path name when matching or storing names in the archive.
Archives created with full path names are not POSIX compliant, and thus
may not work with tools other than up to date GNU tools. Modifying such
archives with GNU ar without using P will remove the full
path names unless the archive is a thin archive. Note that P may be
useful when adding files to a thin archive since r without P
ignores the path when choosing which element to replace. Thus
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.
- s
- Zapisuje indeks plików obiektowych do archiwum, lub odnawia istniejący, nawet jeśli w archiwum nic nie zmieniono. Tej flagi modyfikującej można użyć w połączeniu z dowolną operacją, lub samodzielnie. Uruchamianie ar s na archiwum jest równoważne uruchomieniu na nim ranlib.
- S
- Nie tworzy tablicy symboli archiwum. Może to przyspieszyć budowanie dużej biblioteki w wielu krokach. Wynikowe archiwum nie może być stosowane z konsolidatorem. Aby zbudować tablicę symboli konieczne jest pominięcie modyfikatora S przy ostatnim wykonaniu ar albo uruchomienie ranlib na archiwum.
- T
- Przestarzały alias --thin. T nie jest zalecane, ponieważ w wielu implementacjach ar, T ma inne znaczenie, określone w X/Open System Interface.
- u
- Normalnie, ar r... wstawia wszystkie wypisane pliki do archiwum. Jeśli chce się wstawić tylko te z wymienionych plików, które są nowsze od istniejących składowych o tych samych nazwach, należy użyć tego modyfikatora. Modyfikator u jest dozwolony tylko przy operacji r (podmienienia). W praktyce kombinacja qu nie jest dozwolona, ponieważ sprawdzanie znaczników czasowych spowodowałoby spowolnienie wszystkich ulepszeń operacji q.
- U
- Do not operate in deterministic mode. This is the inverse of
the D modifier, above: added files and the archive index will get
their actual UID, GID, timestamp, and file mode values.
Jest to zachowanie domyślne, o ile binutils nie został skonfigurowany z --enable-deterministic-archives.
- v
- Ten modyfikator żąda wersji operacji, która wypisuje komunikaty informacyjne. Po dodaniu modyfikatora v wiele operacji wyświetla dodatkowe informacje np. przetwarzane pliki.
- V
- Ten modyfikator pokazuje wersję programu ar.
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:
- --help
- Wyświetla listę opcji wiersza poleceń obsługiwanych przez ar i wychodzi.
- --version
- Wyświetla informacje o wersji programu ar i wychodzi.
- -X32_64
- ar ignores an initial option spelled -X32_64, for compatibility with AIX. The behaviour produced by this option is the default for GNU ar. ar does not support any of the other -X options; in particular, it does not support -X32 which is the default for AIX ar.
- --plugin nazwa
- Opcjonalny przełącznik wiersza poleceń
--plugin nazwa powoduje, że ar załaduje
wtyczkę o podanej nazwie, która dodaje
obsługę większej liczby formatów
plików, w tym plików obiektowych z informacjami o
optymalizacji w momencie linkowania.
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.
Please note that this plugin search directory is not the one used by ld's -plugin option. In order to make ar use the linker plugin it must be copied into the ${libdir}/bfd-plugins directory. For GCC based compilations the linker plugin is called liblto_plugin.so.0.0.0. For Clang based compilations it is called LLVMgold.so. The GCC plugin is always backwards compatible with earlier versions, so it is sufficient to just copy the newest one.
- --target nazwa-bfd
- Opcjonalny przełącznik wiersza poleceń --target nazwa-bfd określa, że składowe archiwum są w formacie obiektowym kodu różnym od domyślnego formatu bieżącego systemu.
- --output nazwa-katalogu
- Opcja --output służy do określenia
ścieżki do katalogu, do którego powinny być
wypakowane składowe archiwum. Jeśli się jej nie poda,
używany jest katalog bieżący.
Uwaga - choć obecność tej opcji wymusza wypakowanie za pomocą x, to wciąż trzeba podać tę opcję w wierszu polecenia.
- --record-libdeps zal-bibl
- Opcja --record-libdeps jest identyczna jak modyfikator l, stanowi jedynie odmianę w długiej postaci.
- --thin
- Czyni z podanego archiwum archiwum cienkie. Jeśli podane archiwum już istnieje i jest archiwum zwykłym, istniejące składowe muszą być obecne w tym samym katalogu, co archiwum.
- @plik
- Czyta opcje wiersza poleceń z podanego pliku. Przeczytane
opcje są wstawiane w miejsce oryginalnej opcji @plik. Jeśli
plik nie istnieje lub nie może być odczytany, ta
opcja jest traktowana dosłownie i nie jest usuwana.
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.
ZOBACZ TAKŻE¶
PRAWA AUTORSKIE¶
Copyright (c) 1991-2023 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¶
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.
14 stycznia 2023 r. | binutils-2.40.00 |