AR(1) Narzedzia programistyczne GNU AR(1) NAZWA ar - tworzy, modyfikuje i wypakowuje z archiwow SKLADNIA ar [-X32_64] [-]p[mod] [--plugin nazwa] [--target nazwa-bfd] [--output nazwa-katalogu] [--record-libdeps zal-bibl] [--thin] [poz-rel] [numer] archiwum [skladowa...] OPIS Program GNU ar tworzy, modyfikuje i wypakowuje pliki z archiwow. Archiwum jest pojedynczym plikiem, zawierajacym zbior innych plikow w strukturze, ktora umozliwia wypakowanie plikow oryginalnych (zwanych skladowymi archiwum. Zawartosc pierwotnych plikow, tryb (uprawnienia), znaczniki czasu, wlasciciele i grupy sa zachowywane w archiwum i moga byc przywrocone przy wypakowaniu. GNU ar potrafi obslugiwac archiwa, ktorych skladowe maja nazwy dowolnej dlugosci; zaleznie jednak od konfiguracji ar, mozna ustawiac limit dlugosci nazwy skladowych, dla zachowania kompatybilnosci z formatami archiwow utrzymywanymi przez inne narzedzia. Jesli limit istnieje, to jest czesto limitem 15 znakow (typowy dla formatow zwiazanych z a.out) lub 16 (typowe dla formatow zwiazanych z coff). ar jest uwazany za narzedzie binarne, poniewaz jego archiwa sa najczesciej uzywane jako biblioteki (statyczne) zawierajace najczesciej uzywane funkcje. Poniewaz biblioteki czesto zaleza od innych bibliotek, ar moze rowniez zachowac zaleznosci biblioteki, jesli poda sie opcje --record-libdeps. Jesli poda sie modyfikator s, ar bedzie tworzyl indeks do symboli zdefiniowanych w relokowalnych modulach obiektowych archiwum. Raz utworzony indeks jest odnawiany w archiwum w sytuacji, gdy ar zmieni jego zawartosc (bezpieczne dla operacji odnawiania q). Archiwum z takim indeksem przyspiesza linkowanie biblioteki i umozliwia funkcjom z biblioteki wolanie siebie nawzajem bez wzgledu na polozenie w archiwum. Aby wypisac ten indeks, mozna uzyc nm -s lub nm --print-armap. Jesli archiwum nie ma takiego indeksu, mozna go dodac przy uzyciu innej formy ar, nazywajacej sie ranlib. GNU ar moze opcjonalnie utworzyc archiwum cienkie, ktore zawiera indeks symboli i odniesienia do pierwotnych kopii skladowych archiwum. Przydaje sie to przy budowaniu bibliotek do uzycia w lokalnym drzewie budowania, gdzie zaklada sie, ze obiekty relokowalne pozostana dostepne, a kopiowanie zawartosci kazdego z tych obiektow byloby strata czasu i miejsca. Archiwum moze byc albo cienkie albo normalne. Nie moze byc obiema tymi postaciami jednoczesnie. Po utworzeniu, nie da sie zmienic formatu archiwum bez uprzedniego usuniecia go i utworzenia archiwum na nowo. Archiwa cienkie sa rowniez splaszczone, zatem archiwum cienkie dodane do innego archiwum cienkiego nie zagniezdzi sie, jak staloby sie to ze zwyklym archiwum. Elementy pierwszego archiwum zostana w zamian dodane indywidualnie do drugiego archiwum. Sciezki do elementow archiwum sa przechowywane wzgledem samego archiwum. GNU ar zostal zaprojektowany do uzycia na dwa sposoby. Mozna kontrolowac jego aktywnosc za pomoca opcji wiersza polecen, podobnie jak w roznych odmianach ar na systemach uniksowych albo, jesli poda sie pojedyncza opcje wiersza polecenia -M, mozna kontrolowac go za pomoca skryptu podanego na standardowe wejscie, podobnie jak w programie MRI "librarian". OPCJE GNU ar umozliwia mieszanie kodu operacji p i flag modyfikacji mod w dowolnej kolejnosci, w obrebie pierwszego argumentu wiersza polecen. Mozna rowniez rozpoczac pierwszy argument wiersza polecen kreseczka. Litera kluczowa p okresla, jaka operacje wykonac; moze byc dowolna z nastepujacych, lecz tylko jedna naraz: d Kasuje moduly z archiwum. Nazwy modulow do usuniecia nalezy podac jako skladowe...; archiwum pozostanie nietkniete, jesli nie poda sie plikow do skasowania. Jesli poda sie modyfikator v, to ar wyswietli kazdy skasowany modul. m Operacja sluzy do przemieszczenia skladowych archiwum. Kolejnosc skladowych w archiwum moze byc istotna przy linkowaniu biblioteki z programami, kiedy symbol jest zdefiniowany wiecej niz w jednej skladowej. Jesli nie uzyto zadnych modyfikatorow przy "m", wszystkie skladowe nazwane w argumentach skladowa sa przenoszone na koniec archiwum; mozna rowniez uzyc modyfikatorow a, b lub i, aby przeniesc je do okreslonego miejsca. p Wypisuje okreslone skladowe archiwum na standardowe wyjscie. Jesli zostal podany modyfikator v, to przed skopiowaniem zawartosci skladowej na standardowym wyjsciu, pokazuje jego nazwe. Jesli nie podano zadnych argumentow skladowych, wypisane zostana wszystkie pliki archiwum. q Szybkie dolaczenie; historycznie dodawalo skladowe... do konca archiwum, bez sprawdzania podmieniania. Modyfikatory a, b, i i nie wplywaja na te operacje; nowe skladowe zawsze sa dodawane na koncu archiwum. Modyfikator v powoduje, ze ar wypisuje kazdy plik, ktory doda. Jako ze celem tej operacji jest szybkosc, implementacje ar nie aktualizowaly tablicy symboli archiwum, jesli taka istniala. Jednak zbyt wiele systemow zaklada, ze tablica symboli jest zawsze aktualna, dlatego GNU ar przebudowuje tablice nawet przy operacji szybkiego dolaczenia. Uwaga - GNU ar traktuje polecenie qs jako synonim r - zastepuje istniejace pliki w archiwum i dodaje nowe na jego koncu. r Wstawia pliki skladowe... do archiwum (z podmienianiem). Ta operacja rozni sie od q tym, ze wszystkie istniejace skladowe zostana usuniete, jesli ich nazwy odpowiadaja nazwom dodawanym. Jesli ktorys z plikow nazwanych w argumencie skladowa... nie istnieje, ar wyswietla komunikat o bledzie i pozostawia skladowe archiwum, odpowiadajace tej nazwie. Domyslnie, nowe skladowe sa dodawane na koniec pliku; mozna jednak uzyc jednego z modyfikatorow a, b lub i, aby zazadac wstawienia wzgledem jakiejs istniejacej skladowej. W tej operacji mozna uzyc modyfikatora v, ktory wyswietla po jednym wierszu komentarza dla kazdego wlaczonego pliku, uzupelniajac ja jedna z liter a lub r, wskazujac tak odpowiednio, czy plik zostal dopisany na koncu (nie skasowano zadnej starej skladowej) czy zostal podmieniony. s Dodaje indeks do archiwum lub aktualizuje go, jesli juz istnieje. To polecenie jest wyjatkiem od reguly, ze mozna podac tylko jedna litere polecenia, poniewaz mozna go stosowac jako polecenie lub modyfikator. W obu przypadkach dziala tak samo. t Wypisuje w formie tabelarycznej zawartosc archiwum lub tych z plikow, wymienionych w argumencie skladowe, ktore sa obecne w archiwum. Normalnie wyswietlana jest tylko nazwa skladowej, natomiast jesli poda sie modyfikator O, wyswietlane jest rowniez odpowiednie przesuniecie (offset) skladowej. Aby zapoznac sie z trybami (uprawnieniami), znacznikiem czasowym, wlascicielem, grupa i rozmiarem, nalezy podac modyfikator v. Jesli nie zostanie podany zaden argument skladowa, to wypisane zostana wszystkie pliki archiwum. Jesli pod dana nazwa w archiwum (powiedzmy b.a istnieje wiecej niz jeden plik (powiedzmy fie), to ar t b.a fie wypisze tylko pierwszy z nich; aby zobaczyc wszystkie, nalezy zazadac pelnej listy -- w naszym przypadku, ar t b.a. x Wypakowuje skladowe (o nazwie skladowa) z archiwum. Aby zazadac, by ar wypisal kazda nazwe podczas jej wypakowywania, mozna uzyc modyfikatora v. Jesli nie poda sie skladowej, wypakowane zostana wszystkie pliki archiwum. Plikow nie da sie wypakowac z archiwum cienkiego, istnieja rowniez ograniczenia w stosunku do wypakowywania z archiwow utworzonych za pomoca P: Sciezki nie moga byc absolutne, nie moga zawierac "..", a wszystkie podkatalogi sciezki musza istniec. Jesli wskazane byloby ominiecie tych ograniczen, nalezy podac opcje --output, aby podac katalog wyjsciowy. Za litera kluczowa p moze znajdowac sie pewna liczba modyfikatorow (mod), ktora wtedy okresla wariacje zachowania tej operacji: a Dodaje nowe pliki za istniejaca skladowa archiwum. Jesli uzywa sie tego modyfikatora, to przed podaniem archiwum, nalezy wskazac nazwe istniejacej skladowej archiwum argumentem poz-rel b Dodaje nowe pliki przed istniejaca skladowa archiwum. Jesli uzywa sie tego modyfikatora, to przed podaniem archiwum, nalezy wskazac nazwe istniejacej skladowej archiwum argumentem poz-rel. (Rownowazne i) c Tworzy archiwum. Podane archiwum jest zawsze tworzone jezeli nie istnialo, a zazada sie odnowienia (update). Wypisywane jest jednak wtedy ostrzezenie, chyba ze poda sie z gory, ze chce sie je utworzyc, uzywajac tego modyfikatora. D Dziala w trybie deterministycznym. Przy dodawaniu plikow i indeksu archiwum uzywa zera jako identyfikatorow uzytkownikow, grup, znacznikow czasowych oraz uzywa stalych trybow plikow dla wszystkich plikow. Przy korzystaniu z tej opcji, jesli uzyje sie programu ar z identycznymi opcjami i identycznymi plikami wejsciowymi, kolejne przebiegi utworza identyczne pliki wyjsciowe, niezaleznie od wlascicieli, grup, trybow plikow i czasow modyfikacji plikow wejsciowych. Jesli binutils skonfigurowano z --enable-deterministic-archives, tryb ten jest domyslnie wlaczony. Mozna go wylaczyc modyfikatorem U, zob. nizej. f Skraca nazwy w archiwum. GNU ar normalnie pozwala plikom miec dowolna dlugosc. Powoduje to, ze archiwa moga byc niekompatybilne z natywnymi programami ar niektorych innych systemow. Jesli jest to istotne, mozna wykorzystac modyfikator f, ktory umozliwia skracanie nazw plikow podczas wstawiania ich do archiwum. i Wstawia nowe pliki przed istniejaca skladowa archiwum. Jesli uzywa sie tego modyfikatora, to przed podaniem archiwum, nalezy wskazac nazwe istniejacej skladowej archiwum argumentem poz-rel. (Rownowazne b) l Okresla zaleznosci tej biblioteki. Zaleznosci musza wystapic bezposrednio po tym znaku opcji, musza uzywac tej samej skladni jak wiersz polecenia konsolidatora oraz musza byc podane jako jeden argument. Oznacza to, ze jesli konieczne jest podanie wielu elementow, nalezy je zacytowac, aby utworzyly pojedynczy argument wiersza polecen. Przyklad: l "-L/usr/local/lib -lmojazaleznosc1 -lmojazaleznosc2" N Uzywa parametru numer. Jest on stosowany, gdy wystepuje wiele wpisow z ta sama nazwa w archiwum. Wowczas wypakowane lub usuniete zostanie wystapienie podanej nazwy o zadanym numerze z archiwum. o Chroni oryginalne daty skladowych przy wypakowywaniu. Jesli nie poda sie tego modyfikatora, pliki wypakowane z archiwum beda oznaczone czasem z chwili wypakowania. O Wypisuje przesuniecia (offsety) wewnatrz archiwum. Nalezy uzywac lacznie z opcja t. P Uzywa pelnej sciezki przy dopasowywaniu lub przechowywaniu nazw w archiwum. Archiwa z pelnymi sciezkami nie sa zgodne z norma POSIX, zatem moga nie dzialac z narzedziami innymi niz aktualne narzedzia GNU. Modyfikowanie takich archiwow programem GNU ar bez podania P spowoduje usuniecie pelnych sciezek chyba, ze jest to archiwum cienkie. Prosze zauwazyc, ze P moze byc przydatne przy dodawaniu plikow do archiwum cienkiego, poniewaz r bez P ignoruje sciezki, przy wyborze elementow do zastapienia. Zatem ar rcST archiwum.a podkat/plik1 podkat/plik2 plik1 spowoduje zastapienie "podkat/plik1" przez "plik1" z katalogu biezacego. Dodanie P pozwoli uniknac tego zastapienia. s Zapisuje indeks plikow obiektowych do archiwum, lub odnawia istniejacy, nawet jesli w archiwum nic nie zmieniono. Tej flagi modyfikujacej mozna uzyc w polaczeniu z dowolna operacja, lub samodzielnie. Uruchamianie ar s na archiwum jest rownowazne uruchomieniu na nim ranlib. S Nie tworzy tablicy symboli archiwum. Moze to przyspieszyc budowanie duzej biblioteki w wielu krokach. Wynikowe archiwum nie moze byc stosowane z konsolidatorem. Aby zbudowac tablice symboli konieczne jest pominiecie modyfikatora S przy ostatnim wykonaniu ar albo uruchomienie ranlib na archiwum. T Przestarzaly alias --thin. T nie jest zalecane, poniewaz w wielu implementacjach ar, T ma inne znaczenie, okreslone w X/Open System Interface. u Normalnie, ar r... wstawia wszystkie wypisane pliki do archiwum. Jesli chce sie wstawic tylko te z wymienionych plikow, ktore sa nowsze od istniejacych skladowych o tych samych nazwach, nalezy uzyc tego modyfikatora. Modyfikator u jest dozwolony tylko przy operacji r (podmienienia). W praktyce kombinacja qu nie jest dozwolona, poniewaz sprawdzanie znacznikow czasowych spowodowaloby spowolnienie wszystkich ulepszen operacji q. Uwaga - jesli archiwum utworzono w sposob deterministyczny np. z modyfikatorem D, to zastapienia wystapia zawsze, co uczyni modyfikator u nieefektywnym. U Nie dziala w trybie deterministycznym. Jest to odwrotnosc modyfikatora D opisanej powyzej: podczas kopiowania skladowych archiwum i zapisywania indeksu archiwum uzywa wlasciwych wartosci pol identyfikatorow uzytkownika, grupy, znacznika czasowego i praw dostepu do pliku. Jest to zachowanie domyslne, o ile binutils nie zostal skonfigurowany z --enable-deterministic-archives. v Ten modyfikator zada wersji operacji, ktora wypisuje komunikaty informacyjne. Po dodaniu modyfikatora v wiele operacji wyswietla dodatkowe informacje np. przetwarzane pliki. V Ten modyfikator pokazuje wersje programu ar. Program ar obsluguje rowniez pewne opcje wiersza polecen, ktore nie sa ani modyfikatorami, ani akcjami, lecz zmieniaja jego zachowanie w pewien okreslony sposob: --help Wyswietla liste opcji wiersza polecen obslugiwanych przez ar i wychodzi. --version Wyswietla informacje o wersji programu ar i wychodzi. -X32_64 ar ignoruje poczatkowa opcje -X32_64, ze wzgledu na kompatybilnosc z AIX. Zachowanie okreslone ta opcja jest bowiem domyslne dla GNU ar. ar nie obsluguje zadnych innych opcji -X; w szczegolnosci nie obsluguje -X32, ktora jest domyslna dla AIX ar. --plugin nazwa Opcjonalny przelacznik wiersza polecen --plugin nazwa powoduje, ze ar zaladuje wtyczke o podanej nazwie, ktora dodaje obsluge wiekszej liczby formatow plikow, w tym plikow obiektowych z informacjami o optymalizacji w momencie linkowania. Opcja jest dostepna tylko, jesli program zbudowano z wlaczona obsluga wtyczek. Jesli nie podano --plugin, lecz obsluga wtyczek zostala wlaczona, to ar przechodzi przez pliki w ${libdir}/bfd-plugins w kolejnosci alfabetycznej i uzywa pierwszej wtyczki deklarujacej dany obiekt. Prosze zauwazyc, ze ten katalog przeszukiwania wtyczek nie jest taki, jak uzywany przez opcje -plugin programu ld. Aby ar uzywal wtyczki konsolidarora, musi byc ona skopiowana do katalogu ${libdir}/bfd-plugins. W przypadku kompilacji powstalych w oparciu o GCC, wtyczka konsolidatora ma nazwe liblto_plugin.so.0.0.0. W przypadku Clanga jest to LLVMgold.so. Wtyczka GCC jest zawsze wstecznie kompatybilna z wczesniejszymi wersjami, wiec wystarczy skopiowac jej najnowsza wersje. --target nazwa-bfd Opcjonalny przelacznik wiersza polecen --target nazwa-bfd okresla, ze skladowe archiwum sa w formacie obiektowym kodu roznym od domyslnego formatu biezacego systemu. --output nazwa-katalogu Opcja --output sluzy do okreslenia sciezki do katalogu, do ktorego powinny byc wypakowane skladowe archiwum. Jesli sie jej nie poda, uzywany jest katalog biezacy. Uwaga - choc obecnosc tej opcji wymusza wypakowanie za pomoca x, to wciaz trzeba podac te opcje w wierszu polecenia. --record-libdeps zal-bibl Opcja --record-libdeps jest identyczna jak modyfikator l, stanowi jedynie odmiane w dlugiej postaci. --thin Czyni z podanego archiwum archiwum cienkie. Jesli podane archiwum juz istnieje i jest archiwum zwyklym, istniejace skladowe musza byc obecne w tym samym katalogu, co archiwum. @plik Czyta opcje wiersza polecen z podanego pliku. Przeczytane opcje sa wstawiane w miejsce oryginalnej opcji @plik. Jesli plik nie istnieje lub nie moze byc odczytany, ta opcja jest traktowana doslownie i nie jest usuwana. Opcje w pliku sa rozdzielane bialymi znakami. Bialy znak moze wystapic w opcji, jesli cala opcja zostanie ujeta w pojedyncze albo podwojne cudzyslowy. Mozna dodac dowolny znak (wlaczajac w to znak odwrotnego ukosnika), poprzedzajac go znakiem odwrotnego ukosnika. Plik moze rowniez zawierac dodatkowe opcje @plik - w takim przypadku kazda z takich opcji bedzie przetwarzana rekurencyjnie. ZOBACZ TAKZE nm(1), ranlib(1) oraz wpisy Info zestawu binutils. PRAWA AUTORSKIE Copyright (c) 1991-2025 Free Software Foundation, Inc. Zezwala sie 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 Fundacje Wolnego Oprogramowania, przy czym Sekcjami niezmiennymi sa ,,GNU General Public License" i ,,GNU Free Documentation License", bez tresci przedniej lub tylnej strony okladki. Egzemplarz licencji zamieszczono w sekcji zatytulowanej ,,GNU Free Documentation License". TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Przemek Borys i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . binutils-2.45.0 13 sierpnia 2025 r. AR(1)