Che cos'è il formato di file A?
I file .a contengono librerie di sistema utilizzate dagli sviluppatori software. Tali file si trovano comunemente sui sistemi Unix-like - inclusi Linux e macOS - mentre i sistemi Microsoft Windows utilizzano i file .LIB per lo stesso scopo. I file .a forniscono funzioni compilate e header a cui i file sorgente possono fare riferimento. Le librerie con estensione .a sono comunemente chiamate librerie statiche.
Tecnicamente, un file .a è un archivio in formato ar: un contenitore che ospita uno o più file oggetto (.o) compilati. Su Linux i membri sono file .o in formato ELF; su macOS sono oggetti Mach-O. Ogni archivio .a inizia con la firma ASCII a 8 byte !<arch> seguita da un carattere di nuova riga, rendendolo riconoscibile dagli strumenti di ispezione dei file. È possibile elencare il contenuto dell'archivio con ar t libname.a e ispezionare i simboli esportati con nm libname.a.
I programmi informatici utilizzano due tipi di librerie di risorse: librerie statiche e librerie dinamiche. Le librerie statiche (.lib o .a) sono in genere più grandi di quelle dinamiche perché il loro codice viene compilato direttamente nel programma di destinazione al momento del collegamento (link time). Le librerie dinamiche - file .SO su Linux, .dylib su macOS - vengono collegate a un determinato programma al momento della sua esecuzione o durante l'esecuzione stessa. Gli sviluppatori possono personalizzare il proprio codice per lavorare con varie librerie collegate dinamicamente.
L'utility ar (parte di GNU Binutils su Linux) è lo strumento standard per la creazione e la manutenzione degli archivi .a. Poiché il linker estrae solo i file oggetto di cui ha bisogno, il codice inutilizzato di una libreria statica non viene incluso nell'eseguibile finale.
Sicurezza e incolumità
RISCHIO: LOWUn file .a contiene dati per la fase di build, non è qualcosa che il sistema operativo esegue direttamente, quindi presenta pochi rischi diretti per gli utenti finali. Per gli sviluppatori, il problema riguarda la fiducia nella catena di approvvigionamento: una libreria statica dannosa o manomessa collega il suo codice direttamente nel programma, quindi utilizza file .a solo da sorgenti SDK affidabili e verifica checksum/firme. Un file .a sorgente Ada è testo semplice e innocuo da aprire.
Dettagli del formato
in sintesi- File codice sorgente Ada - Alcuni compilatori/progetti Ada utilizzano .a (e .ada/.adb/.ads) per il sorgente Ada in testo semplice - questo è il significato registrato nel database legacy, ma è molto meno comune della libreria statica.
Programmi che aprono file A
Dettagli tecnici
specifiche approfondite| Firma del file | «!<arch>\n» (hex: 21 3C 61 72 63 68 3E 0A) all'offset byte 0 |
| Formato archivio | ar (Unix Archiver) - lo stesso formato contenitore su sistemi Linux, macOS e BSD |
| Tipo MIME | application/x-archive |
| Tipo file membro (Linux) | File oggetto rilocabili ELF (.o) |
| Tipo file membro (macOS) | File oggetto rilocabili Mach-O (.o) |
| Dimensione header per membro | 60 byte - campi ASCII: nome (16 B), timestamp (12 B), UID (6 B), GID (6 B), permessi (8 B), dimensione (10 B), marcatore finale (2 B) |
| Membro indice simboli | GNU ar usa un membro chiamato «/»; BSD/macOS ar usa «__SYMDEF» - mappa i nomi dei simboli agli offset dei membri per un collegamento rapido |
| Convenzione di denominazione | lib<nome>.a - es. libz.a, libssl.a, libpthread.a; il prefisso «lib» è richiesto dal flag -l del linker |
| Compressione | Nessuna - i file oggetto membri sono memorizzati letteralmente, non compressi |
| Comportamento al link-time | Il linker estrae solo i membri .o che soddisfano i simboli non risolti; i membri inutilizzati non vengono inclusi nell'eseguibile finale |
| Strumento di creazione standard | ar (GNU Binutils su Linux; LLVM ar / BSD ar su macOS); invocato come: ar rcs libname.a file1.o file2.o |
| Strumento ispezione simboli | nm - elenca simboli esportati, non definiti e locali; es. nm libname.a |
| Strumento ispezione contenuti | ar t libname.a elenca i membri; ar x libname.a li estrae; objdump / otool disassemblano il codice dei membri |
| Equivalente Windows | Libreria statica .lib (formato COFF/PE); i cross-compilatori per Windows come MinGW producono anche file .a |
| Dimensione tipica del file | Varia da pochi KB (piccola libreria di utility) a centinaia di MB (es. libclang_rt.a o una libc.a completa) |
| Rilasciato | ar archive format from early Unix (1970s); standard static-library extension on Unix/Linux/macOS |
| Standard aperto | Sì · royalty-free |
| Specifica | en.wikipedia.org |
Conversioni A
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file A.