ar - archívumok létrehozása, módosítása és kibontása
ar [-X32_64] [-]p[mod] [--plugin name] [--target bfdname] [--output dirname] [--record-libdeps libdeps] [--thin] [relpos] [count] archive [member...]
A GNU ar program archívumokat hoz létre, módosít, és kivonatokat készít azokból. Az archívum egyetlen fájl, amely más fájlok gyűjteményét tartalmazza olyan szerkezetben, amely lehetővé teszi az eredeti egyedi fájlok (az archívum tagjainak) visszakeresését.
Az eredeti fájlok tartalma, módja (jogosultságok), időbélyegzője, tulajdonosa és csoportja az archívumban megőrződik, és kibontáskor visszaállítható.
A GNU ar olyan archívumokat tarthat fenn, amelyek tagjainak bármilyen hosszúságú neve van; attól függően azonban, hogy az ar hogyan van konfigurálva a rendszeren, a tagnév hosszának korlátozása lehet a más eszközökkel karbantartott archív formátumokkal való kompatibilitás miatt. Ha létezik, a korlát gyakran 15 karakter (jellemzően az a.out formátumokra) vagy 16 karakter (jellemző a coff-hoz kapcsolódó formátumokra).
Az ar bináris segédprogramnak számít, mivel az ilyen típusú archívumokat leggyakrabban könyvtárként használják, amelyek általában szükséges szubrutinokat tartalmaznak. Mivel a könyvtárak gyakran más könyvtáraktól függenek, az ar egy könyvtár függőségeit is rögzítheti, ha a --record-libdeps beállítás meg van adva.
Az ar indexet hoz létre az archívumban lévő áthelyezhető objektummodulokban meghatározott szimbólumokhoz, amikor megadja az s módosítót. Létrehozása után ez az index frissül az archívumban, amikor az ar módosítja a tartalmát (kivéve a q frissítési műveletet). Az ilyen indexszel rendelkező archívum felgyorsítja a könyvtárhoz való kapcsolódást, és lehetővé teszi, hogy a könyvtár rutinjai felhívják egymást, függetlenül attól, hogy az archívumban helyezkednek-e el.
Az indextáblázat listázásához használhatja az nm -s vagy az nm --print-armap parancsot. Ha egy archívumból hiányzik a táblázat, az ar másik formája, a ranlib használható csak a táblázat hozzáadásához.
A GNU ar opcionálisan létrehozhat egy vékony archívumot, amely szimbólumindexet és hivatkozásokat tartalmaz az archívum tagfájljainak eredeti példányaira. Ez hasznos a helyi összeállítási fán belüli könyvtárak felépítéséhez, ahol az áthelyezhető objektumok várhatóan elérhetők maradnak, és az egyes objektumok tartalmának másolása csak időt és helyet veszítene.
Az archívum lehet vékony vagy normál. Nem lehet mindkettő egyszerre. Az archívum létrehozása után a formátuma nem módosítható anélkül, hogy először törölné, majd új archívumot hozna létre a helyén.
A vékony archívumok is kiegyenlítettek, így ha egy vékony archívumot egy másik vékony archívumhoz adunk hozzá, az ne kerüljön egymásba, ahogy az egy normál archívum esetében történne. Ehelyett az első archívum elemei egyenként hozzáadódnak a második archívumhoz.
Az archívum elemeihez vezető útvonalak magához az archívumhoz képest tárolódnak.
A GNU ar két különböző eszközzel kompatibilis. Tevékenységét parancssori opciókkal szabályozhatja, például az ar különböző változataival Unix rendszereken; vagy ha az egyetlen parancssori -M opciót adja meg, akkor azt egy szabványos bemeneten keresztül biztosított szkripttel vezérelheti, például az MRI könyvtáros programmal.
A GNU ar lehetővé teszi a p műveleti kód és a mod módosító jelzők keverését bármilyen sorrendben, az első parancssori argumentumban.
Ha kívánja, az első parancssori argumentumot kötőjellel kezdheti.
A p kulcsbetű megadja, hogy milyen műveletet kell végrehajtani; a következők bármelyike lehet, de ezek közül csak egyet kell megadnia:
Törölje a modulokat az archívumból. Adja meg a tagként törölni kívánt modulok nevét...; az archívum érintetlen marad, ha nem ad meg törölni kívánt fájlokat. Ha megadja a v módosítót, az ar listázza az egyes modulokat a törléskor.
Ezzel a művelettel áthelyezheti tagokat egy archívumban. A tagok sorrendje az archívumban megváltoztathatja a programok összekapcsolását a könyvtár használatával, ha egy szimbólum egynél több tagban van definiálva. Ha nem használunk módosítókat az m-hoz, akkor a member argumentumokban megnevezett tagok az archívum végére kerülnek át. ehelyett az a, b vagy i módosítókkal áthelyezheti őket egy adott helyre.
Nyomtassa ki az archívum meghatározott tagjait a szabványos kimeneti fájlba. Ha a v módosító meg van adva, mutassa meg a tag nevét, mielőtt a tartalmát a szabványos kimenetre másolná. Ha nem ad meg tag argumentumot, akkor az archívumban lévő összes fájl kinyomtatásra kerül.
Gyors hozzáfűzés; A korábbiak szerint a member... fájlokat az archívum végéhez adták anélkül, hogy ellenőrizné a cserét. Az a, b és i módosítók nincs hatással erre a műveletre; az új tagok mindig az archívum végére kerülnek. A v módosító az ar listázza az egyes fájlokat a hozzáfűzésük szerint. Mivel ennek a műveletnek a lényege a sebesség, az ar implementációinak lehetőségük van arra, hogy ne frissítsék az archívum szimbólumtáblázatát, ha létezik ilyen. Túl sok különböző rendszer azonban feltételezi, hogy a szimbólumtáblázatok mindig naprakészek, ezért a GNU ar még egy gyors hozzáfűzéssel is újraépíti a táblázatot. Megjegyzés - A GNU ar a qs parancsot az r szinonimájaként kezeli – lecseréli a már meglévő fájlokat az archívumban, és újakat csatol a végére.
Helyezze be a member... fájlokat az archívumba (csere). Ez a művelet abban különbözik a q-tól, hogy a korábban meglévő tagok törlődnek, ha a nevük megegyezik a hozzáadott nevükkel. Ha a member... mezőben megnevezett fájlok egyike nem létezik, az ar hibaüzenetet jelenít meg, és zavartalanul hagyja az archívum minden meglévő tagját, amely megfelel ennek a névnek. Alapértelmezés szerint az új tagok a fájl végére kerülnek; de használhatja az a, b vagy i módosítók egyikét, hogy elhelyezést kérjen valamelyik meglévő taghoz képest. Az ehhez a művelethez használt v módosító minden beszúrt fájlhoz kiír egy kimeneti sort az a vagy az r betűk egyikével együtt, amely jelzi, hogy a fájlt hozzáfűzték (nincs régi tag törölve) vagy lecserélték.
Adjon hozzá egy indexet az archívumhoz, vagy frissítse, ha már létezik. Vegye figyelembe, hogy ez a parancs kivételt képez a szabály alól, hogy csak egy parancsbetű lehet, mivel lehet használni parancsként vagy módosítóként is. Mindkét esetben ugyanazt csinálja.
Jelenítsen meg egy táblázatot, amely felsorolja az archívum vagy a member... listában szereplő fájlok tartalmát, amelyek az archívumban vannak. Általában csak a tag neve jelenik meg, de ha az O módosító van megadva, akkor a tag megfelelő eltolása is megjelenik. Végül, a módok (engedélyek), az időbélyeg, a tulajdonos, a csoport és a méret megtekintéséhez a v módosítót kell megadni. Ha nem ad meg tagot, az archívumban lévő összes fájl megjelenik a listában. Ha egynél több fájl van azonos névvel (mondjuk fie) egy archívumban (mondjuk b.a), az ar t b.a fie listák csak az első fokon; az összes megtekintéséhez teljes listát kell kérnie --- példánkban: ar t b.a.
Kivonja ki a tagokat (tag néven) az archívumból. Használhatja a v módosítót ehhez a művelethez, és kérheti, hogy az ar listázza ki az egyes neveket, amint azokat kicsomagolja. Ha nem ad meg tagot, az archívumban lévő összes fájl kicsomagolásra kerül. A fájlok nem bonthatók ki vékony archívumból, és korlátozások vonatkoznak a P-vel létrehozott archívumokból való kibontásra: Az elérési utak nem lehetnek abszolútak, nem tartalmazhatnak .. kódot, és bármilyen az útvonalakban lévő alkönyvtáraknak létezniük kell. Ha el kívánja kerülni ezeket a korlátozásokat, akkor használja a --output opciót egy kimeneti könyvtár megadásához.
Számos módosító (mod) közvetlenül követheti a p billentyűt, hogy meghatározza a műveletek viselkedésének változatait:
Adjon hozzá új fájlokat az archívum egy meglévő tagja után. Ha az a módosítót használja, akkor egy meglévő archívumtag nevének szerepelnie kell relpos argumentumként, az archive specifikáció előtt.
Adjon hozzá új fájlokat mielőtt egy meglévő archívum tagja lesz. Ha a b módosítót használja, akkor az archívum egy meglévő tagjának nevének szerepelnie kell relpos argumentumként, az archive specifikáció előtt. (ugyanaz, mint az i).
Hozza létre az archívumot. A megadott archívum mindig létrejön, ha nem létezett, amikor frissítést kér. A rendszer azonban figyelmeztetést küld, hacsak előre nem adja meg, hogy ennek a módosítónak a használatával létre kell hoznia.
Működjön determinisztikus módban. Fájlok és archív index hozzáadásakor használjon nullát az UID-ekhez, GID-ekhez, időbélyegekhez, és használjon konzisztens fájlmódokat minden fájlhoz. Ha ezt a beállítást használja, ha az art azonos beállításokkal és azonos bemeneti fájlokkal használja, több futtatás azonos kimeneti fájlokat hoz létre, függetlenül a bemeneti fájlok tulajdonosaitól, csoportjaitól, fájlmódjaitól vagy módosítási idejétől. Ha a binutils az ---enable-deterministic-archives paraméterrel volt konfigurálva, akkor ez a mód alapértelmezés szerint be van kapcsolva. Letiltható az alábbi U módosítóval.
Az archívumban lévő nevek csonkolása. A GNU ar általában bármilyen hosszúságú fájlneveket engedélyez. Emiatt olyan archívumokat hoz létre, amelyek bizonyos rendszereken nem kompatibilisek a natív ar programmal. Ha ez aggodalomra ad okot, akkor az f módosító használható a fájlnevek csonkolására, amikor azokat az archívumba helyezi.
Szúrjon be új fájlokat az archívum egy meglévő tagja előtt. Ha az i módosítót használja, egy meglévő archívumtag nevének szerepelnie kell relpos argumentumként, az archive specifikáció előtt. (ugyanaz, mint a b).
Adja meg a könyvtár függőségeit. A függőségeknek közvetlenül követniük kell ezt az opciókaraktert, ugyanazt a szintaxist kell használniuk, mint a linker parancssorában, és egyetlen argumentumban kell megadniuk. Azaz, ha több elemre van szükség, akkor azokat idézni kell, hogy egyetlen parancssori argumentumot alkossanak. Például L -L/usr/local/lib -lmydep1 -lmydep2
A count paramétert használja. Ez akkor használatos, ha az archívumban több bejegyzés is található azonos néven. Bontsa ki vagy törölje az adott név példányszámának számát az archívumból.
A tagok kibontásakor őrizze meg a tagok eredeti dátumát. Ha nem adja meg ezt a módosítót, az archívumból kivont fájlok a kicsomagolás időpontjával lesznek ellátva.
Tageltolások megjelenítése az archívumban. Használja a t opcióval együtt.
Használja a teljes elérési utat, amikor a neveket egyezteti vagy tárolja az archívumban. A teljes elérési útnévvel létrehozott archívumok nem POSIX-kompatibilisek, ezért előfordulhat, hogy nem működnek a naprakész GNU-eszközökön kívül más eszközökkel. Az ilyen archívumok GNU ar használatával a P használata nélkül eltávolítják a teljes elérési utat, kivéve, ha az archívum vékony archívum. Vegye figyelembe, hogy a P hasznos lehet, ha fájlokat ad hozzá egy vékony archívumhoz, mivel az r a P nélkül figyelmen kívül hagyja az elérési utat a cserélni kívánt elem kiválasztásakor. Így az ar rcST archive.a subdir/file1 subdir/file2 file1 azt eredményezi, hogy az első subdir/file1 helyére file1 kerül az aktuális könyvtárból. A P hozzáadása megakadályozza ezt a cserét.
Írjon objektum-fájl indexet az archívumba, vagy frissítsen egy meglévőt, még akkor is, ha az archívumban nem történik más módosítás. Ezt a módosító jelzőt bármilyen művelettel vagy önmagában használhatja. Az ar s futtatása egy archívumban megegyezik a ranlib futtatásával.
Ne hozzon létre archív szimbólumtáblázatot. Ez több lépésben felgyorsíthatja egy nagy könyvtár felépítését. Az így kapott archívum nem használható a linkerrel. Szimbólumtábla létrehozásához ki kell hagynia az S módosítót az ar utolsó végrehajtásakor, vagy le kell futtatnia a ranlib parancsot az archívumban. .
Elavult alias a következőhöz: --thhin. A T használata nem ajánlott, mert sok ar implementációban a T más jelentéssel bír, az X/Open System Interface által meghatározottak szerint.
Általában az ar r... az összes felsorolt fájlt beszúrja az archívumba. Ha a felsorolt fájlok közül csak azokat szeretné beszúrni, amelyek újabbak, mint az azonos nevű meglévő tagok, használja ezt a módosítót. Az u módosító csak az r (csere) művelethez engedélyezett. Különösen a qu kombináció nem megengedett, mivel az időbélyegek ellenőrzése elveszítené a q műveletből származó sebességbeli előnyöket.
Ne működjön determinisztikus módban. Ez a fenti D módosító fordítottja: a hozzáadott fájlok és az archívum indexe megkapja a tényleges UID, GID, időbélyeg és fájlmód értékeit. Ez az alapértelmezett, kivéve, ha a binutils az ---enable-deterministic-archives paraméterrel van konfigurálva.
Ez a módosító egy művelet bőbeszédű verzióját kéri. Sok művelet további információkat jelenít meg, például a feldolgozott fájlneveket, amikor a v módosító hozzá van fűzve.
Ez a módosító az ar verziószámát mutatja.
Az ar program néhány parancssori opciót is támogat, amelyek nem módosítók és nem műveletek, de bizonyos módon megváltoztatják a viselkedését:
Megjeleníti az ar által támogatott parancssori opciók listáját, majd kilép.
Megjeleníti az ar verzióinformációit, majd kilép.
Az ar figyelmen kívül hagyja a -X32_64 kezdeti beállítást az AIX-szel való kompatibilitás érdekében. A beállítás által létrehozott viselkedés a GNU ar alapértelmezett beállítása. Az ar nem támogatja a többi -X opciót; különösen nem támogatja a -X32-et, amely az AIX ar alapértelmezett beállítása.
Az opcionális --plugin name parancssori kapcsoló hatására az ar betölti a name nevű beépülő modult, amely támogatja a következőt: további fájlformátumok, beleértve az objektumfájlokat linkidő-optimalizálási információkkal. Ez az opció csak akkor érhető el, ha az eszközláncot úgy építették fel, hogy engedélyezve van a bővítmény támogatása. Ha a --plugin nincs megadva, de a beépülő modulok támogatása engedélyezve van, akkor az ar a $ {libdir}/bfd-plugins fájljai között iterál ábécé sorrendben, és az első bővítmény kerül felhasználásra, amely igényli a kérdéses objektumot. Kérjük, vegye figyelembe, hogy ez a beépülő modul keresési könyvtára nem az, amelyet az ld -plugin opciója használ. Ahhoz, hogy az ar használja a linker beépülő modult, be kell másolni a $ {libdir}/bfd-plugins könyvtárba. A GCC alapú fordításoknál a linker beépülő modul neve liblto_plugin.so.0.0.0. A Clang alapú összeállítások esetében ez az úgynevezett LLVMgold.so. A GCC bővítmény mindig visszafelé kompatibilis a korábbi verziókkal, így elegendő a legújabbat másolni.
Az opcionális --target bfdname parancssori kapcsoló megadja, hogy az archívum tagjai a rendszer alapértelmezett formátumától eltérő objektumkód-formátumban legyenek. Lát
A --output opcióval megadható egy olyan könyvtár elérési útja, amelybe az archívum tagjait ki kell bontani. Ha ez az opció nincs megadva, akkor az aktuális könyvtár kerül felhasználásra. Megjegyzés – bár ennek az opciónak a jelenléte x kibontási műveletet jelent, ennek az opciónak továbbra is szerepelnie kell a parancssorban.
A --record-libdeps opció megegyezik az l módosítóval, csak hosszú formában van kezelve.
A megadott archívum legyen vékony archívum. Ha már létezik, és normál archívum, akkor a meglévő tagoknak ugyanabban a könyvtárban kell lenniük, mint az archívum.
Olvassa el a parancssori opciókat a fájlból. Az olvasott opciók az eredeti @fájl opció helyére kerülnek beillesztésre. Ha a fájl nem létezik, vagy nem olvasható, akkor az opciót a rendszer szó szerint kezeli, és nem távolítja el. A fájl beállításai szóközzel vannak elválasztva. Szóköz karakter beilleszthető egy opcióba, ha a teljes opciót szimpla vagy dupla idézőjelbe helyezi. Bármely karakter (beleértve a fordított perjelet is) beilleszthető úgy, hogy a beírandó karaktert egy fordított perjel előtaggal rögzíti. A fájl maga is tartalmazhat további @file beállításokat; minden ilyen opció rekurzív feldolgozásra kerül.
nm (1), ranlib (1), and the Info entries for binutils.
Copyright (c) 1991-2023 Free Software Foundation, Inc.
A dokumentum másolására, terjesztésére és/vagy módosítására engedélyt adunk a GNU Free Documentation License 1.3-as verziója vagy bármely későbbi, a Free Software Foundation által közzétett verzió feltételei szerint; Változatlan szakaszok nélkül, elülső borítószöveg nélkül és hátsó borítószöveg nélkül. A licenc egy példánya a GNU Free Documentation License című részben található.