ar - referenční příručka, možnosti, příklady příkazů


NÁZEV

ar - vytvářet, upravovat a extrahovat z archivů

SYNOPSE

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

POPIS

Program GNU ar vytváří, upravuje a extrahuje z archivů. Archiv je jeden soubor obsahující kolekci dalších souborů ve struktuře, která umožňuje získat původní jednotlivé soubory (nazývané členové archivu).

Obsah původních souborů, režim (oprávnění), časové razítko, vlastník a skupina jsou v archivu zachovány a lze je při extrakci obnovit.

GNU ar může udržovat archivy, jejichž členové mají jména libovolné délky; nicméně v závislosti na tom, jak je ar na vašem systému nakonfigurováno, může být kvůli kompatibilitě s archivními formáty udržovanými jinými nástroji stanoven limit délky jména člena. Pokud existuje, je limit často 15 znaků (typické pro formáty související s a.out) nebo 16 znaků (typické pro formáty související s coff).

ar je považován za binární nástroj, protože archivy tohoto druhu se nejčastěji používají jako knihovny obsahující běžně potřebné podprogramy. Protože knihovny budou často záviset na jiných knihovnách, ar může také zaznamenávat závislosti knihovny, když je zadána volba --record-libdeps.

ar vytvoří index pro symboly definované v modulech přemístitelných objektů v archivu, když zadáte modifikátor s. Po vytvoření je tento index aktualizován v archivu vždy, když ar provede změnu v jeho obsahu (kromě operace aktualizace q). Archiv s takovým indexem urychluje propojení s knihovnou a umožňuje rutinám v knihovně vzájemně se volat bez ohledu na jejich umístění v archivu.

K zobrazení této indexové tabulky můžete použít nm -s nebo nm --print-armap. Pokud v archivu chybí tabulka, lze k přidání pouze tabulky použít jinou formu ar nazvanou ranlib.

GNU ar může volitelně vytvořit tenký archiv, který obsahuje index symbolů a odkazy na původní kopie členských souborů archivu. To je užitečné pro vytváření knihoven pro použití v rámci místního stromu sestavení, kde se očekává, že přemístitelné objekty zůstanou dostupné a kopírování obsahu každého objektu by pouze plýtvalo časem a prostorem.

Archiv může být buď tenký, nebo může být normální. Nemůže to být obojí zároveň. Jakmile je archiv vytvořen, jeho formát nelze změnit, aniž byste jej nejprve odstranili a poté na jeho místo nevytvořili nový archiv.

Tenké archivy jsou také sloučeny, takže přidáním jednoho tenkého archivu do jiného tenkého archivu nedojde k jeho vnoření, jak by se stalo u běžného archivu. Místo toho jsou prvky prvního archivu přidány jednotlivě do druhého archivu.

Cesty k prvkům archivu jsou uloženy relativně k archivu samotnému.

GNU ar je navržen tak, aby byl kompatibilní se dvěma různými zařízeními. Jeho aktivitu můžete ovládat pomocí voleb příkazového řádku, jako jsou různé varianty ar na unixových systémech; nebo, pokud zadáte volbu jednoho příkazového řádku -M, můžete jej ovládat pomocí skriptu dodávaného přes standardní vstup, jako je program knihovny MRI.

MOŽNOSTI

GNU ar vám umožňuje smíchat operační kód p a příznaky modifikátoru mod v libovolném pořadí, v rámci prvního argumentu příkazového řádku.

Pokud chcete, můžete první argument příkazového řádku začít pomlčkou.

Klíčové písmeno p určuje, jaká operace se má provést; může to být kterýkoli z následujících, ale musíte zadat pouze jeden z nich:

  1. Odstranit moduly z archivu. Zadejte názvy modulů, které mají být odstraněny jako člen...; Pokud nezadáte žádné soubory k odstranění, archiv zůstane nedotčen. Pokud zadáte modifikátor v, ar vypíše každý modul tak, jak byl odstraněn.

  2. Pomocí této operace můžete přesunout členy v archivu. Uspořádání členů v archivu může mít rozdíl ve způsobu propojení programů pomocí knihovny, pokud je symbol definován ve více než jednom členu. Pokud s m nepoužijete žádné modifikátory, všichni členové, které pojmenujete v argumentech member, se přesunou na konec archivu; můžete je místo toho přesunout na určené místo pomocí modifikátorů a, b nebo i.

  3. Vytiskněte zadané členy archivu do standardního výstupního souboru. Pokud je zadán modifikátor v, před zkopírováním jeho obsahu na standardní výstup zobrazte jméno člena. Pokud nezadáte žádné argumenty člen, vytisknou se všechny soubory v archivu.

  4. Rychlé připojení; Historicky přidejte soubory člen... na konec archivu, aniž byste museli kontrolovat, zda nejsou nahrazeny. Modifikátory a, b a i tuto operaci neovlivňují; noví členové jsou vždy umístěni na konec archivu. Modifikátor v způsobí, že ar vypíše každý soubor tak, jak je připojen. Protože smyslem této operace je rychlost, implementace ar mají možnost neaktualizovat tabulku symbolů archivu, pokud taková existuje. Příliš mnoho různých systémů však předpokládá, že tabulky symbolů jsou vždy aktuální, takže GNU ar tabulku znovu sestaví i s rychlým připojením. Poznámka - GNU ar považuje příkaz qs za synonymum pro r - nahrazování již existujících souborů v archivu a přidávání nových na konci.

  5. Vložte soubory člen... do archivu (s náhradou). Tato operace se liší od q v tom, že všichni dříve existující členové jsou odstraněni, pokud se jejich jména shodují s přidávanými. Pokud jeden ze souborů pojmenovaných v člen... neexistuje, ar zobrazí chybovou zprávu a ponechá bez vyrušení všechny existující členy archivu odpovídající tomuto názvu. Ve výchozím nastavení jsou noví členové přidáni na konec souboru; ale můžete použít jeden z modifikátorů a, b nebo i k vyžádání umístění vzhledem k některému existujícímu členovi. Modifikátor v použitý u této operace vyvolá řádek výstupu pro každý vložený soubor spolu s jedním z písmen a nebo r, které označuje, zda soubor byl připojen (žádný starý člen nebyl odstraněn) nebo nahrazen.

  6. Přidejte do archivu index nebo jej aktualizujte, pokud již existuje. Všimněte si, že tento příkaz je výjimkou z pravidla, že může být pouze jedno písmeno příkazu, protože jej lze použít buď jako příkaz, nebo jako modifikátor. V obou případech to dělá to samé.

  7. Zobrazte tabulku se seznamem obsahu archivu nebo souborů uvedených v člen... které jsou přítomny v archivu. Normálně se zobrazuje pouze název prvku, ale pokud je zadán modifikátor O, zobrazí se také odpovídající offset prvku. Nakonec, abyste viděli režimy (oprávnění), časové razítko, vlastníka, skupinu a velikost, měl by být zahrnut modifikátor v. Pokud nezadáte člena, budou uvedeny všechny soubory v archivu. Pokud je v archivu více než jeden soubor se stejným názvem (řekněme fie) (řekněme b.a), ar t b.a fie uvádí pouze první instance; chcete-li je zobrazit všechny, musíte požádat o úplný seznam ---v našem příkladu ar t b.a.

  8. Extrahujte členy (s názvem člen) z archivu. Při této operaci můžete použít modifikátor v, abyste si vyžádali, aby ar vypsal každé jméno tak, jak je extrahuje. Pokud neurčíte člena, budou extrahovány všechny soubory v archivu. Soubory nelze extrahovat z tenkého archivu a existují omezení pro extrahování z archivů vytvořených pomocí P: Cesty nesmí být absolutní, nesmí obsahovat .. a jakékoli podadresáře v cestách musí existovat. Pokud se chcete těmto omezením vyhnout, použijte volbu --output k určení výstupního adresáře.

Po klíčovém písmenu p může bezprostředně následovat řada modifikátorů (mod), které specifikují varianty chování operace:

  1. Přidejte nové soubory po existujícího člena archivu. Pokud použijete modifikátor a, jméno existujícího člena archivu musí být uvedeno jako argument relpos před specifikací archive.

  2. Přidejte nové soubory před existujícího člena archivu. Pokud použijete modifikátor b, jméno existujícího člena archivu musí být uvedeno jako argument relpos před specifikací archive. (stejně jako i).

  3. Vytvořte archiv. Zadaný archiv se vždy vytvoří, pokud neexistuje, když požadujete aktualizaci. Varování se však vydá, pokud předem neurčíte, že ho chcete vytvořit pomocí tohoto modifikátoru.

  1. Pracujte v deterministickém režimu. Při přidávání souborů a archivního indexu použijte nulu pro UID, GID, časová razítka a používejte konzistentní režimy souborů pro všechny soubory. Při použití této možnosti, pokud je ar použit s identickými možnostmi a identickými vstupními soubory, vícenásobné spuštění vytvoří identické výstupní soubory bez ohledu na vlastníky vstupních souborů, skupiny, režimy souborů nebo časy úprav. Pokud byl binutils nakonfigurován pomocí --enable-deterministic-archives, pak je tento režim ve výchozím nastavení zapnutý. Lze jej deaktivovat pomocí modifikátoru U níže.

  1. Zkraťte jména v archivu. GNU ar normálně povoluje názvy souborů libovolné délky. To způsobí, že na některých systémech vytvoří archivy, které nejsou kompatibilní s nativním programem ar. Pokud je to problém, modifikátor f lze použít ke zkrácení názvů souborů při jejich vkládání do archivu.

  1. Vložte nové soubory před existujícího člena archivu. Pokud použijete modifikátor i, jméno existujícího člena archivu musí být uvedeno jako argument relpos před specifikací archive. (stejné jako b).

  1. Zadejte závislosti této knihovny. Závislosti musí bezprostředně následovat za tímto znakem volby, musí používat stejnou syntaxi jako příkazový řádek linkeru a musí být zadány v rámci jediného argumentu. To znamená, že pokud je potřeba více položek, musí být uvedeny v uvozovkách, aby vytvořily jeden argument příkazového řádku. Například L -L/usr/local/lib -lmydep1 -lmydep2

  1. Používá parametr count. To se používá, pokud je v archivu více položek se stejným názvem. Extrahujte nebo odstraňte počet výskytů daného jména z archivu.

  1. Při extrahování členů zachovejte původní data. Pokud tento modifikátor nezadáte, soubory extrahované z archivu budou označeny časem extrakce.

  1. Zobrazit posuny členů uvnitř archivu. Používejte společně s možností t.

  2. Při porovnávání nebo ukládání názvů v archivu použijte úplný název cesty. Archivy vytvořené s úplnými názvy cest nejsou kompatibilní s POSIX, a proto nemusí fungovat s jinými nástroji než s aktuálními nástroji GNU. Úprava takových archivů pomocí GNU ar bez použití P odstraní úplné názvy cest, pokud se nejedná o tenký archiv. Pamatujte, že P může být užitečné při přidávání souborů do tenkého archivu, protože r bez P ignoruje cestu při výběru prvku, který má být nahrazen. Takže rcST archive.a subdir/file1 subdir/file2 file1 bude mít za následek nahrazení prvního subdir/file1 file1 z aktuálního adresáře. Přidání P zabrání tomuto nahrazení.

  1. Zapište do archivu index objektového souboru nebo aktualizujte existující, i když v archivu nebyly provedeny žádné další změny. Tento příznak modifikátoru můžete použít s jakoukoli operací nebo samostatně. Spuštění ar s v archivu je ekvivalentní spuštění ranlib v archivu.

  1. Negenerujte tabulku archivních symbolů. To může urychlit budování velké knihovny v několika krocích. Výsledný archiv nelze použít s linkerem. Chcete-li sestavit tabulku symbolů, musíte při posledním spuštění ar vynechat modifikátor S nebo musíte v archivu spustit ranlib .

  2. Zastaralý alias pro --thin. T se nedoporučuje, protože v mnoha implementacích ar má T jiný význam, jak je určeno rozhraním X/Open System Interface.

  1. Normálně ar r... vloží do archivu všechny uvedené soubory. Pokud chcete vložit pouze ty soubory, které uvádíte, které jsou novější než stávající členové se stejnými názvy, použijte tento modifikátor. Modifikátor u je povolen pouze pro operaci r (nahradit). Zejména není povolena kombinace qu, protože kontrola časových razítek by ztratila jakoukoli rychlostní výhodu z operace q.

  1. Nefungují v deterministickém režimu. Toto je opak modifikátoru D výše: přidané soubory a index archivu získají své skutečné UID, GID, časové razítko a hodnoty režimu souboru. Toto je výchozí nastavení, pokud binutils nebyl nakonfigurován pomocí --enable-deterministic-archives.

  1. Tento modifikátor vyžaduje podrobnou verzi operace. Mnoho operací zobrazuje další informace, jako jsou zpracované názvy souborů, když je připojen modifikátor v.

  1. Tento modifikátor zobrazuje číslo verze ar.

Program ar také podporuje některé možnosti příkazového řádku, které nejsou modifikátory ani akcemi, ale které určitým způsobem mění jeho chování:

--help

Zobrazí seznam možností příkazového řádku podporovaných ar a poté se ukončí.

--version

Zobrazí informace o verzi ar a poté se ukončí.

-X32_64

ar ignoruje počáteční volbu napsanou -X32_64 kvůli kompatibilitě s AIX. Chování vytvořené touto volbou je výchozí pro GNU ar. ar nepodporuje žádnou z dalších možností -X; konkrétně nepodporuje -X32, což je výchozí hodnota pro AIX ar.

--plugin name

Volitelný přepínač příkazového řádku --plugin name způsobí, že ar načte plugin s názvem name, který přidává podporu pro více formátů souborů, včetně objektových souborů s informacemi o optimalizaci doby propojení. Tato možnost je dostupná pouze v případě, že byl toolchain vytvořen s povolenou podporou pluginů. Pokud není k dispozici --plugin, ale podpora pluginu byla povolena, pak ar iteruje přes soubory v $ {libdir}/bfd-plugins v abecedním pořadí a je použit první plugin, který si nárokuje daný objekt. Upozorňujeme, že tento adresář pro vyhledávání pluginu není tím, který používá možnost -plugin ld. Aby ar mohl používat linker plugin, musí být zkopírován do adresáře $ {libdir}/bfd-plugins. Pro kompilace založené na GCC se linker plugin nazývá liblto_plugin.so.0.0.0. Pro kompilace založené na Clang se nazývá LLVMgold.so. Zásuvný modul GCC je vždy zpětně kompatibilní se staršími verzemi, takže stačí pouze zkopírovat nejnovější.

--target target

Volitelný přepínač příkazového řádku --target bfdname určuje, že členové archivu jsou ve formátu objektového kódu, který se liší od výchozího formátu vašeho systému. Vidět

--output dirname

Možnost --output lze použít k určení cesty k adresáři, do kterého mají být členové archivu extrahováni. Pokud tato možnost není zadána, použije se aktuální adresář. Poznámka – ačkoli přítomnost této možnosti znamená operaci extrakce x, tato možnost musí být stále zahrnuta na příkazovém řádku.

--record-libdeps libdeps

Volba --record-libdeps je identická s modifikátorem l, jen se zpracovává v dlouhém tvaru.

--thin

Udělejte ze zadaného archivu tenký archiv. Pokud již existuje a jedná se o běžný archiv, stávající členové musí být přítomni ve stejném adresáři jako archiv.

  1. Přečtěte si možnosti příkazového řádku ze souboru. Načtené volby se vloží místo původní volby @soubor. Pokud soubor neexistuje nebo jej nelze číst, bude s volbou zacházeno doslovně a nebude odstraněna. Možnosti v souboru jsou odděleny mezerou. Znak mezery může být zahrnut do možnosti tak, že celou možnost obklopíte jednoduchými nebo dvojitými uvozovkami. Jakýkoli znak (včetně zpětného lomítka) může být zahrnut tak, že před znak, který má být zahrnut zpětným lomítkem, lze zahrnout předponu. Samotný soubor může obsahovat další možnosti @soubor; všechny takové možnosti budou zpracovány rekurzivně.

VIZ TAKÉ

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

AUTORSKÁ PRÁVA

Copyright (c) 1991-2023 Free Software Foundation, Inc.

Je povoleno kopírovat, šířit a/nebo upravovat tento dokument za podmínek GNU Free Documentation License, verze 1.3 nebo kterékoli pozdější verze publikované Free Software Foundation; bez neměnných sekcí, bez textů na přední straně obálky a bez textů na zadní straně obálky. Kopie licence je součástí sekce nazvané GNU Free Documentation License.