Qu'est-ce que le format de fichier A ?
Les fichiers .a contiennent des bibliothèques système utilisées par les développeurs de logiciels. Ces fichiers se trouvent couramment sur les systèmes de type Unix - y compris Linux et macOS - tandis que les systèmes Microsoft Windows utilisent des fichiers .LIB dans le même but. Les fichiers .a fournissent des fonctions compilées et des en-têtes qui peuvent être référencés par des fichiers sources. Les bibliothèques avec une extension .a sont communément appelées bibliothèques statiques.
Techniquement, un fichier .a est une archive au format ar : un conteneur contenant un ou plusieurs fichiers objets compilés (.o). Sur Linux, les membres sont des fichiers .o au format ELF ; sur macOS, ce sont des objets Mach-O. Chaque archive .a commence par la signature ASCII de 8 octets !<arch> suivie d'un saut de ligne, ce qui la rend reconnaissable par les outils d'inspection de fichiers. Vous pouvez lister le contenu de l'archive avec ar t libname.a et inspecter les symboles exportés avec nm libname.a.
Les programmes informatiques utilisent deux types de bibliothèques de ressources : les bibliothèques statiques et les bibliothèques dynamiques. Les bibliothèques statiques (.lib ou .a) sont généralement plus volumineuses que les bibliothèques dynamiques car leur code est compilé directement dans le programme cible au moment de l'édition de liens. Les bibliothèques dynamiques - fichiers .SO sur Linux, .dylib sur macOS - sont connectées à un programme donné lors de son exécution ou en cours d'exécution. Les développeurs de programmes peuvent personnaliser leur code pour qu'il fonctionne avec diverses bibliothèques liées dynamiquement.
L'utilitaire ar (faisant partie de GNU Binutils sur Linux) est l'outil standard pour créer et maintenir des archives .a. Étant donné que l'éditeur de liens n'extrait que les fichiers objets dont il a besoin, le code inutilisé d'une bibliothèque statique n'est pas inclus dans l'exécutable final.
Sécurité et sûreté
RISQUE : LOWUn fichier .a contient des données de construction, pas quelque chose que le système d'exploitation exécute, il présente donc peu de risques directs pour les utilisateurs finaux. Pour les développeurs, la préoccupation concerne la confiance dans la chaîne d'approvisionnement : une bibliothèque statique malveillante ou altérée lie son code directement dans votre programme, utilisez donc les fichiers .a uniquement à partir de sources de SDK de confiance et vérifiez les sommes de contrôle/signatures. Un fichier .a source Ada est en texte brut et sans danger à ouvrir.
Détails du format
en bref- Fichier de code source Ada - Certains compilateurs/projets Ada utilisent .a (ainsi que .ada/.adb/.ads) pour le code source Ada en texte brut - c'est la signification enregistrée par la base de données héritée, mais elle est beaucoup moins courante que la bibliothèque statique.
Programmes qui ouvrent les fichiers A
Détails techniques
spécifications approfondies| Signature de fichier | « !<arch>\n » (hex : 21 3C 61 72 63 68 3E 0A) à l'offset d'octet 0 |
| Format d'archive | ar (Unix Archiver) - même format de conteneur sur les systèmes Linux, macOS et BSD |
| Type MIME | application/x-archive |
| Type de fichier membre (Linux) | Fichiers objets relogeables ELF (.o) |
| Type de fichier membre (macOS) | Fichiers objets relogeables Mach-O (.o) |
| Taille de l'en-tête par membre | 60 octets - champs ASCII : nom (16 o), horodatage (12 o), UID (6 o), GID (6 o), mode (8 o), taille (10 o), marqueur de fin (2 o) |
| Membre d'index des symboles | GNU ar utilise un membre nommé « / » ; BSD/macOS ar utilise « __SYMDEF » - mappe les noms de symboles aux offsets des membres pour une liaison rapide |
| Convention de nommage | lib<nom>.a - par ex., libz.a, libssl.a, libpthread.a ; le préfixe « lib » est requis par le drapeau -l de l'éditeur de liens |
| Compression | Aucune - les fichiers objets membres sont stockés tels quels, sans compression |
| Comportement au moment de la liaison | L'éditeur de liens n'extrait que les membres .o qui satisfont les symboles non résolus ; les membres inutilisés ne sont pas inclus dans l'exécutable de sortie |
| Outil de création standard | ar (GNU Binutils sur Linux ; LLVM ar / BSD ar sur macOS) ; invoqué comme : ar rcs libname.a file1.o file2.o |
| Outil d'inspection des symboles | nm - liste les symboles exportés, indéfinis et locaux ; par ex., nm libname.a |
| Outil d'inspection du contenu | ar t libname.a liste les membres ; ar x libname.a les extrait ; objdump / otool désassemble le code des membres |
| Équivalent Windows | Bibliothèque statique .lib (format COFF/PE) ; les compilateurs croisés Windows tels que MinGW produisent également des fichiers .a |
| Plage de taille de fichier typique | Varie de quelques Ko (petite bibliothèque utilitaire) à des centaines de Mo (par ex., libclang_rt.a ou une libc.a complète) |
| Publié | ar archive format from early Unix (1970s); standard static-library extension on Unix/Linux/macOS |
| Standard ouvert | Oui · libre de droits |
| Spécification | en.wikipedia.org |
Conversions A
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers A.