Che cos'è il formato di file LIB?
Un file .lib è un file di libreria fornito come input al linker. I file .lib sono di due tipi: file di libreria statica standard e file di libreria di importazione COFF (Common Object File Format). I file di libreria statica contengono moduli oggetto .obj compilati; i file di libreria di importazione contengono stub di simboli e ordinali che puntano a una .dll, fornendo al linker le informazioni necessarie per risolvere le dipendenze a runtime. Lo strumento LIB.EXE viene utilizzato per creare entrambi i tipi di file di libreria. A livello binario, un .lib è un archivio in formato ar che inizia con la firma di 8 byte !<arch> - la stessa struttura utilizzata dalle librerie statiche Unix .a. È possibile ispezionare il contenuto con DUMPBIN /HEADERS o ar -t.
Sicurezza e incolumità
RISCHIO: LOWUn file .lib contiene dati per la fase di compilazione, non è qualcosa che Windows esegue, quindi presenta pochi rischi diretti per gli utenti finali. Per gli sviluppatori, la preoccupazione riguarda la fiducia nella catena di approvvigionamento: una libreria statica dannosa o manomessa collega il suo codice direttamente nel programma, quindi utilizza solo file .lib provenienti da fonti SDK affidabili e verifica checksum/firme. Gli archivi .lib non correlati di giochi/app sono file di dati inerti.
Dettagli del formato
in sintesi- Archivio di giochi / applicazioni (LIB) - Alcuni giochi e app (ad esempio i pacchetti di asset di certi titoli) utilizzano .lib come contenitore di dati/archivio personalizzato non correlato alle librerie del compilatore.
Programmi che aprono file LIB
Dettagli tecnici
specifiche approfondite| Tipo di formato | Archivio di moduli oggetto COFF (lib statica) o stub di importazione (lib di importazione) |
| Magic bytes | 21 3C 61 72 63 68 3E 0A - ASCII «!<arch>\n» all'offset 0 |
| Struttura del contenitore | Formato archivio ar; stessa famiglia di firme a 8 byte delle librerie statiche .a di Unix |
| Tipo MIME | application/octet-stream |
| Contenuto lib statica | Membri .obj COFF contenenti codice macchina compilato, record di rilocazione e tabelle dei simboli |
| Contenuto lib importazione | Tabella dei nomi dei simboli, nome della DLL e stub ordinali/nomi di esportazione - nessun codice macchina eseguibile |
| Utilizzo principale | Input del linker: consumato da LINK.EXE o ld per risolvere i riferimenti ai simboli in fase di compilazione |
| Strumento di creazione | LIB.EXE (MSVC toolchain); anche ar e dlltool (GNU Binutils / MinGW) |
| Strumenti di ispezione | DUMPBIN.EXE /HEADERS, LIB.EXE /LIST, ar -t, nm |
| Indice dei simboli | Il primo membro dell'archivio è una mappa dei simboli che consente una ricerca rapida durante il collegamento |
| Generazione lib importazione | Generata automaticamente da LINK.EXE durante la creazione di una DLL; creata manualmente con LIB.EXE /DEF:<deffile> |
| Compatibilità linker | Microsoft LINK.EXE, lld-link (LLVM); GNU ld tramite MinGW con compatibilità parziale |
| Piattaforma di destinazione | Principalmente Windows (Win32 / Win64); toolchain MS-DOS legacy |
| Codifica | Binaria; i record COFF sono allineati alla parola macchina all'interno dei membri dell'archivio ar |
| Controparte Unix | Archivio di libreria statica .a di Unix/Linux, creato con ar e consumato da ld |
| Origine dello sviluppo | Implementazione Microsoft di COFF; COFF stesso risale a AT&T Unix System V (1983) |
| Rilasciato | COFF lineage from Unix (1980s); MS .lib via Visual C++/MS-DOS toolchains, early 1990s |
| Standard aperto | Sì · royalty-free |
| Specifica | learn.microsoft.com |
Conversioni LIB
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file LIB.