Vad är filformatet A?
.a-filer innehåller systembibliotek som används av programvaruutvecklare. Sådana filer finns vanligtvis på Unix-liknande system - inklusive Linux och macOS - medan Microsoft Windows-system använder .LIB-filer för samma ändamål. .a-filer tillhandahåller kompilerade funktioner och headers som kan refereras av källfiler. Bibliotek med filändelsen .a kallas vanligtvis för statiska bibliotek.
En .a-fil är tekniskt sett ett arkiv i ar-format: en behållare som innehåller en eller flera kompilerade objektfiler (.o). På Linux är medlemmarna .o-filer i ELF-format; på macOS är de Mach-O-objekt. Varje .a-arkiv börjar med den 8-byte långa ASCII-signaturen !<arch> följt av en nyrad, vilket gör den igenkännbar för filinspektionsverktyg. Du kan lista arkivets innehåll med ar t libname.a och inspektera exporterade symboler med nm libname.a.
Datorprogram använder två typer av resursbibliotek: statiska bibliotek och dynamiska bibliotek. Statiska bibliotek (.lib eller .a) är vanligtvis större än dynamiska eftersom deras kod kompileras direkt in i målprogrammet vid länkning. Dynamiska bibliotek - .SO-filer på Linux, .dylib på macOS - ansluts till ett givet program vid dess körning eller mitt under programkörningen. Programutvecklare kan anpassa sin kod för att fungera med olika dynamiskt länkade bibliotek.
Verktyget ar (en del av GNU Binutils på Linux) är standardverktyget för att skapa och underhålla .a-arkiv. Eftersom länkaren endast extraherar de objektfiler den behöver, inkluderas inte oanvänd kod från ett statiskt bibliotek i den slutliga körbara filen.
Säkerhet & trygghet
RISK: LOWEn .a-fil är data för byggtillfället, inte något som operativsystemet kör, så den utgör liten direkt risk för slutanvändare. För utvecklare är oron förtroende för leveranskedjan: ett skadligt eller manipulerat statiskt bibliotek länkar sin kod direkt in i ditt program, så använd endast .a-filer från betrodda SDK-källor och verifiera kontrollsummor/signaturer. En .a-fil med Ada-källkod är vanlig text och ofarlig att öppna.
Formatdetaljer
i ett nötskal- Ada-källkodsfil - Vissa Ada-kompilatorer/projekt använder .a (och .ada/.adb/.ads) för Ada-källkod i klartext - detta är den betydelse som den äldre databasen registrerade, men den är betydligt mindre vanlig än det statiska biblioteket.
Program som öppnar A-filer
Tekniska detaljer
djup specifikation| Filsignatur | «!<arch>\n» (hex: 21 3C 61 72 63 68 3E 0A) vid byte-offset 0 |
| Arkivformat | ar (Unix Archiver) - samma behållarformat över Linux, macOS och BSD-system |
| MIME-typ | application/x-archive |
| Medlemsfiltyp (Linux) | ELF-relokerbara objektfiler (.o) |
| Medlemsfiltyp (macOS) | Mach-O-relokerbara objektfiler (.o) |
| Header-storlek per medlem | 60 bytes - ASCII-fält: namn (16 B), tidsstämpel (12 B), UID (6 B), GID (6 B), läge (8 B), storlek (10 B), slutmarkör (2 B) |
| Symbolindex-medlem | GNU ar använder en medlem vid namn «/»; BSD/macOS ar använder «__SYMDEF» - mappar symbolnamn till medlems-offsets för snabb länkning |
| Namnkonvention | lib<namn>.a - t.ex. libz.a, libssl.a, libpthread.a; prefixet «lib» krävs av länkarens -l flagga |
| Komprimering | Ingen - medlemsobjektfiler lagras ordagrant, okomprimerade |
| Beteende vid länkning | Länkaren extraherar endast de .o-medlemmar som tillfredsställer oavlösta symboler; oanvända medlemmar inkluderas inte i den resulterande körbara filen |
| Standardverktyg för skapande | ar (GNU Binutils på Linux; LLVM ar / BSD ar på macOS); anropas som: ar rcs libname.a file1.o file2.o |
| Verktyg för symbolinspektion | nm - listar exporterade, odefinierade och lokala symboler; t.ex. nm libname.a |
| Verktyg för innehållsinspektion | ar t libname.a listar medlemmar; ar x libname.a extraherar dem; objdump / otool disassemblerar medlemskod |
| Windows-motsvarighet | .lib statiskt bibliotek (COFF/PE-format); Windows-korskompilatorer som MinGW producerar också .a-filer |
| Typiskt storleksintervall | Varierar från några KB (litet verktygsbibliotek) till hundratals MB (t.ex. libclang_rt.a eller en fullständig libc.a) |
| Släppt | ar archive format from early Unix (1970s); standard static-library extension on Unix/Linux/macOS |
| Öppen standard | Ja · royaltyfri |
| Specifikation | en.wikipedia.org |
A-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om A-filer.