Che cos'è il formato di file AR?
Il formato di archivio .ar risale a Unix Version 1 (1971), creato presso i Bell Labs come l'archiviatore originale di Unix. Un file .ar concatena più file membri, ciascuno preceduto da un'intestazione ASCII fissa di 60 byte che registra il nome del membro, l'ora di modifica, i permessi e la dimensione in byte. Ogni archivio inizia con la stringa magica di 8 byte !<arch> seguita da un singolo avanzamento di riga (0x0A).
Il formato memorizza i membri non compressi per impostazione predefinita. Esistono due varianti principali:
- La variante BSD (utilizzata su macOS) estende i nomi di file lunghi in linea dopo ogni intestazione del membro.
- La variante System V/GNU (utilizzata su Linux) memorizza i nomi lunghi in uno speciale membro
//e antepone una voce di indice dei simboli/per una ricerca efficiente in fase di collegamento.
Oggi .ar si incontra più comunemente come librerie statiche .a su Linux e macOS, dove lo strumento ar di GNU binutils è l'implementazione standard. I pacchetti Debian .deb sono anch'essi archivi ar - rinominando un .deb ed estraendolo si rivelano i membri interni control.tar e data.tar. Comandi ar comuni: ar rcs libfoo.a *.o crea un archivio, ar t archive.ar elenca i membri e ar x archive.ar li estrae.
Sicurezza e incolumità
RISCHIO: LOWGli archivi AR stessi sono contenitori senza semantica eseguibile - non possono eseguire codice automaticamente. Tuttavia, i membri all'interno possono essere file oggetto compilati o eseguibili che potrebbero essere dannosi. Quando si estrae un archivio ar da una fonte non attendibile, ispezionare i file estratti prima di eseguirli. Le librerie statiche collegate ai propri binari diventano parte di tali binari; una libreria statica manomessa è un vettore di attacco alla catena di approvvigionamento (es. archivi di toolchain compromessi). Verificare sempre i checksum quando si scaricano pacchetti di toolchain contenenti librerie .a/.ar.
Dettagli del formato
in sintesi- Pacchetto Debian (.deb) - Un file .deb è un archivio ar contenente i membri control.tar.* e data.tar.*; il contenitore ar è trasparente per gli utenti finali (dpkg lo gestisce).
- Libreria statica .a (stesso formato, estensione diversa) - Su Linux/macOS .a è l'estensione convenzionale per le librerie statiche in formato ar; .ar è meno comune ma identico.
Programmi che aprono file AR
Dettagli tecnici
specifiche approfondite| Magic bytes | 21 3C 61 72 63 68 3E 0A - stringa ASCII !<arch> più newline (0x0A) all'offset 0 |
| Tipo MIME | application/x-archive |
| Dimensione intestazione per membro | 60 byte (campi a larghezza fissa, codificati in ASCII) |
| Layout dei campi dell'intestazione | Nome file 16 B, ora di modifica 12 B, UID 6 B, GID 6 B, modalità 8 B, dimensione 10 B, magic 2 B |
| Allineamento dei membri | Limite di 2 byte; i membri di lunghezza dispari sono riempiti con un singolo carattere newline (0x0A) |
| Compressione | Nessuna per impostazione predefinita - i file membri sono memorizzati testualmente e non compressi |
| Controllo integrità | Nessun checksum per membro o a livello di archivio nel formato ar |
| Limite nome file | 16 caratteri nell'intestazione fissa; illimitato tramite estensione BSD in linea o tabella dei membri System V // |
| Varianti del formato | BSD (macOS): nomi estesi in linea; System V/GNU (Linux): tabella dei membri // per nomi lunghi |
| Indice dei simboli GNU | GNU ar antepone un membro della tabella dei simboli / agli archivi .a per una ricerca efficiente dei simboli in fase di collegamento |
| Supporto thin archive | Gli archivi thin GNU usano il magic 21 3C 74 68 69 6E 3E 0A (!<thin>) e memorizzano i percorsi dei file, non i dati |
| Usi primari | Librerie statiche .a (Linux, macOS), pacchetti Debian .deb, pacchetti OpenWrt .ipk |
| Piattaforme | Linux, macOS, FreeBSD, Solaris, AIX, Windows (MinGW/Cygwin/WSL) |
| Rilasciato | 1971 (Unix v1, as the original Unix archiver) |
| Ultima versione | POSIX.1-2017 specifies the format; GNU ar (binutils) is current implementation |
| Standard aperto | Sì · royalty-free |
| Specifica | pubs.opengroup.org |
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file AR.