Qu'est-ce que le format de fichier LIB ?
Un fichier .lib est un fichier de bibliothèque fourni en entrée à l'éditeur de liens. Les fichiers .lib se déclinent en deux types : les fichiers de bibliothèque statique standard et les fichiers de bibliothèque d'importation COFF (Common Object File Format). Les fichiers de bibliothèque statique contiennent des modules objets .obj compilés ; les fichiers de bibliothèque d'importation contiennent des stubs de symboles et d'ordinaux pointant vers une .dll, donnant à l'éditeur de liens les informations nécessaires pour résoudre les dépendances au moment de l'exécution. L'outil LIB.EXE est utilisé pour créer les deux types de fichiers de bibliothèque. Au niveau binaire, un .lib est une archive au format ar qui commence par la signature de 8 octets !<arch> - la même structure utilisée par les bibliothèques statiques Unix .a. Vous pouvez inspecter le contenu avec DUMPBIN /HEADERS ou ar -t.
Sécurité et sûreté
RISQUE : LOWUn .lib contient des données de temps de construction, pas quelque chose que Windows exécute, il présente donc peu de risques directs pour les utilisateurs finaux. Pour les développeurs, le problème est la confiance dans la chaîne d'approvisionnement : une bibliothèque statique malveillante ou altérée lie son code directement dans votre programme, n'utilisez donc que des fichiers .lib provenant de sources SDK de confiance et vérifiez les sommes de contrôle/signatures. Les archives .lib de jeux/applications non liées sont des fichiers de données inertes.
Détails du format
en bref- Archive de jeu / application (LIB) - Certains jeux et applications (par exemple, les packs de ressources de certains titres) utilisent .lib comme conteneur de données/archive personnalisé sans rapport avec les bibliothèques de compilateur.
Programmes qui ouvrent les fichiers LIB
Détails techniques
spécifications approfondies| Type de format | Archive de modules objets COFF (lib statique) ou stubs d'importation (lib d'importation) |
| Octets magiques | 21 3C 61 72 63 68 3E 0A - ASCII « !<arch>\n » à l'offset 0 |
| Structure du conteneur | Format d'archive ar ; même famille de signature de 8 octets que les bibliothèques statiques .a d'Unix |
| Type MIME | application/octet-stream |
| Contenu lib statique | Membres .obj COFF contenant du code machine compilé, des enregistrements de relocalisation et des tables de symboles |
| Contenu lib d'importation | Table de noms de symboles, nom de la DLL et stubs d'ordinaux/noms d'exportation - pas de code machine exécutable |
| Usage principal | Entrée de l'éditeur de liens : consommé par LINK.EXE ou ld pour résoudre les références de symboles lors de la construction |
| Outil de création | LIB.EXE (chaîne d'outils MSVC) ; également ar et dlltool (GNU Binutils / MinGW) |
| Outils d'inspection | DUMPBIN.EXE /HEADERS, LIB.EXE /LIST, ar -t, nm |
| Index des symboles | Le premier membre de l'archive est une carte des symboles permettant une recherche rapide lors de la liaison |
| Génération de lib d'importation | Généré automatiquement par LINK.EXE lors de la construction d'une DLL ; créé manuellement avec LIB.EXE /DEF:<deffile> |
| Compatibilité éditeur de liens | Microsoft LINK.EXE, lld-link (LLVM) ; GNU ld via MinGW avec compatibilité partielle |
| Plateforme cible | Principalement Windows (Win32 / Win64) ; chaînes d'outils MS-DOS héritées |
| Encodage | Binaire ; les enregistrements COFF sont alignés sur les mots machine à l'intérieur des membres de l'archive ar |
| Équivalent Unix | Archive de bibliothèque statique .a Unix/Linux, créée avec ar et consommée par ld |
| Lignée de développement | Implémentation Microsoft de COFF ; COFF lui-même remonte à AT&T Unix System V (1983) |
| Publié | COFF lineage from Unix (1980s); MS .lib via Visual C++/MS-DOS toolchains, early 1990s |
| Standard ouvert | Oui · libre de droits |
| Spécification | learn.microsoft.com |
Conversions LIB
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers LIB.