Hva er A-filformatet?
.a-filer inneholder systembiblioteker som brukes av programvareutviklere. Slike filer finnes vanligvis på Unix-lignende systemer - inkludert Linux og macOS - mens Microsoft Windows-systemer bruker .LIB-filer til samme formål. .a-filer inneholder kompilerte funksjoner og headere som kan refereres til av kildekodefiler. Biblioteker med filendelsen .a blir vanligvis referert til som statiske biblioteker.
En .a-fil er teknisk sett et arkiv i ar-format: en beholder som inneholder én eller flere kompilerte objektfiler (.o). På Linux er medlemmene .o-filer i ELF-format; på macOS er de Mach-O-objekter. Hvert .a-arkiv begynner med den 8-byte lange ASCII-signaturen !<arch> etterfulgt av et linjeskift, noe som gjør den gjenkjennelig for filinspeksjonsverktøy. Du kan liste opp arkivinnholdet med ar t libname.a og inspisere eksporterte symboler med nm libname.a.
Dataprogrammer bruker to typer ressursbiblioteker: statiske biblioteker og dynamiske biblioteker. Statiske biblioteker (.lib eller .a) er vanligvis større enn dynamiske fordi koden deres kompileres direkte inn i målprogrammet ved linking. Dynamiske biblioteker - .SO-filer på Linux, .dylib på macOS - kobles til et gitt program når det kjøres eller midt under programutførelsen. Programutviklere kan tilpasse koden sin til å fungere med ulike dynamisk-linkede biblioteker.
Verktøyet ar (en del av GNU Binutils på Linux) er standardverktøyet for å opprette og vedlikeholde .a-arkiver. Fordi linkeren bare trekker ut objektfilene den trenger, blir ikke ubrukt kode fra et statisk bibliotek inkludert i den endelige kjørbare filen.
Sikkerhet og trygghet
RISIKO: LOWEn .a-fil er data for bygging, ikke noe operativsystemet kjører, så den utgjør liten direkte risiko for sluttbrukere. For utviklere er bekymringen tillit til forsyningskjeden: et ondsinnet eller manipulert statisk bibliotek linker koden sin rett inn i programmet ditt, så bruk bare .a-filer fra pålitelige SDK-kilder og verifiser sjekksummer/signaturer. En Ada-kildekode .a-fil er ren tekst og ufarlig å åpne.
Formatdetaljer
i et nøtteskall- Ada kildekodefil - Noen Ada-kompilatorer/prosjekter bruker .a (og .ada/.adb/.ads) for Ada-kildekode i ren tekst - dette er betydningen den eldre databasen registrerte, men det er langt mindre vanlig enn det statiske biblioteket.
Programmer som åpner A-filer
Tekniske detaljer
dyp spesifikasjon| Filsignatur | «!<arch>\n» (hex: 21 3C 61 72 63 68 3E 0A) ved byte-offset 0 |
| Arkivformat | ar (Unix Archiver) - samme beholderformat på tvers av Linux, macOS og BSD-systemer |
| MIME-type | application/x-archive |
| Medlemsfiltype (Linux) | ELF relokerbare objektfiler (.o) |
| Medlemsfiltype (macOS) | Mach-O relokerbare objektfiler (.o) |
| Header-størrelse per medlem | 60 bytes - ASCII-felt: navn (16 B), tidsstempel (12 B), UID (6 B), GID (6 B), modus (8 B), størrelse (10 B), sluttmarkør (2 B) |
| Symbolindeks-medlem | GNU ar bruker et medlem kalt «/»; BSD/macOS ar bruker «__SYMDEF» - mapper symbolnavn til medlem-offsets for rask linking |
| Navnekonvensjon | lib<navn>.a - f.eks. libz.a, libssl.a, libpthread.a; «lib»-prefikset kreves av linkerens -l flagg |
| Komprimering | Ingen - medlemsobjektfiler lagres uendret, ukomprimert |
| Oppførsel ved linking | Linkeren trekker bare ut .o-medlemmene som tilfredsstiller uoppløste symboler; ubrukte medlemmer inkluderes ikke i den ferdige kjørbare filen |
| Standardverktøy for opprettelse | ar (GNU Binutils på Linux; LLVM ar / BSD ar på macOS); kjøres som: ar rcs libname.a file1.o file2.o |
| Verktøy for symbolinspeksjon | nm - lister eksporterte, udefinerte og lokale symboler; f.eks. nm libname.a |
| Verktøy for innholdsinspeksjon | ar t libname.a lister medlemmer; ar x libname.a trekker dem ut; objdump / otool disassemblerer medlemskode |
| Windows-ekvivalent | .lib statisk bibliotek (COFF/PE-format); Windows-krysskompilatorer som MinGW produserer også .a-filer |
| Typisk filstørrelse | Varierer fra noen få KB (lite verktøybibliotek) til hundrevis av MB (f.eks. libclang_rt.a eller en full libc.a) |
| Utgitt | ar archive format from early Unix (1970s); standard static-library extension on Unix/Linux/macOS |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | en.wikipedia.org |
A-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om A-filer.