Hvad er A-filformatet?
.a-filer indeholder systembiblioteker, der bruges af softwareudviklere. Sådanne filer findes almindeligvis på Unix-lignende systemer - herunder Linux og macOS - mens Microsoft Windows-systemer bruger .LIB-filer til samme formål. .a-filer leverer kompilerede funktioner og headere, som kildefiler kan referere til. Biblioteker med filtypenavnet .a kaldes almindeligvis for statiske biblioteker.
En .a-fil er teknisk set et arkiv i ar-format: en container, der indeholder en eller flere kompilerede objektfiler (.o). På Linux er medlemmerne .o-filer i ELF-format; på macOS er de Mach-O-objekter. Ethvert .a-arkiv begynder med den 8-byte ASCII-signatur !<arch> efterfulgt af en nylinje, hvilket gør det genkendeligt for filinspektionsværktøjer. Du kan liste arkivets indhold med ar t libname.a og inspicere eksporterede symboler med nm libname.a.
Computerprogrammer bruger to typer ressourcebiblioteker: statiske biblioteker og dynamiske biblioteker. Statiske biblioteker (.lib eller .a) er typisk større end dynamiske, fordi deres kode kompileres direkte ind i målprogrammet på link-tidspunktet. Dynamiske biblioteker - .SO-filer på Linux, .dylib på macOS - forbindes til et givet program ved dets eksekvering eller midt under programafviklingen. Programudviklere kan tilpasse deres kode til at fungere med forskellige dynamisk linkede biblioteker.
Værktøjet ar (en del af GNU Binutils på Linux) er standardværktøjet til at oprette og vedligeholde .a-arkiver. Fordi linkeren kun udtrækker de objektfiler, den har brug for, inkluderes ubrugt kode fra et statisk bibliotek ikke i den endelige eksekverbare fil.
Sikkerhed og tryghed
RISIKO: LOWEn .a er build-tidsdata, ikke noget operativsystemet kører, så den udgør lille direkte risiko for slutbrugere. For udviklere er bekymringen tillid til forsyningskæden: et ondsindet eller manipuleret statisk bibliotek linker sin kode direkte ind i dit program, så brug kun .a-filer fra betroede SDK-kilder og verificer tjeksummer/signaturer. En Ada-kildekode .a er almindelig tekst og ufarlig at åbne.
Formatdetaljer
kort fortalt- Ada-kildekodefil - Nogle Ada-compilere/projekter bruger .a (og .ada/.adb/.ads) til Ada-kildekode i almindelig tekst - dette er den betydning, den ældre database registrerede, men det er langt mindre almindeligt end det statiske bibliotek.
Programmer der åbner A-filer
Tekniske detaljer
dyb specifikation| Filsignatur | «!<arch>\n» (hex: 21 3C 61 72 63 68 3E 0A) ved byte offset 0 |
| Arkivformat | ar (Unix Archiver) - samme containerformat på tværs af 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 pr. medlem | 60 bytes - ASCII-felter: navn (16 B), tidsstempel (12 B), UID (6 B), GID (6 B), tilstand (8 B), størrelse (10 B), slutmarkør (2 B) |
| Symbolindeks-medlem | GNU ar bruger et medlem navngivet «/»; BSD/macOS ar bruger «__SYMDEF» - mapper symbolnavne til medlems-offsets for hurtig linkning |
| Navngivningskonvention | lib<navn>.a - f.eks. libz.a, libssl.a, libpthread.a; «lib»-præfikset kræves af linkerens -l flag |
| Komprimering | Ingen - medlemsobjektfiler gemmes ordret, ukomprimeret |
| Link-tidsadfærd | Linkeren udtrækker kun de .o-medlemmer, der opfylder uafklarede symboler; ubrugte medlemmer inkluderes ikke i den resulterende eksekverbare fil |
| Standardværktøj til oprettelse | ar (GNU Binutils på Linux; LLVM ar / BSD ar på macOS); kaldes som: ar rcs libname.a file1.o file2.o |
| Værktøj til symbolinspektion | nm - lister eksporterede, udefinerede og lokale symboler; f.eks. nm libname.a |
| Værktøj til indholdsinspektion | ar t libname.a lister medlemmer; ar x libname.a udtrækker dem; objdump / otool disassemblerer medlemskode |
| Windows-modstykke | .lib statisk bibliotek (COFF/PE-format); Windows cross-compilere såsom MinGW producerer også .a-filer |
| Typisk filstørrelsesområde | Varierer fra få KB (lille hjælpebibliotek) til hundredvis af MB (f.eks. libclang_rt.a eller en fuld libc.a) |
| Udgivet | ar archive format from early Unix (1970s); standard static-library extension on Unix/Linux/macOS |
| Åben standard | Ja · royaltyfri |
| Specifikation | en.wikipedia.org |
A-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om A-filer.