Ar (Unix)
L' archiveur (également appelé simplement ar ) est un utilitaire Unix qui conserve des groupes de fichiers sous la forme d'un seul fichier d'archive. Généralement, ar est utilisé pour créer et mettre à jour les fichiers de bibliothèque utilisés par l'éditeur de liens ou l' éditeur de liens ; cependant, il peut être utilisé pour créer des fichiers à d'autres fins. ar est inclus comme l'un des GNU Binutils .
Création d'une archive
Par exemple, pour créer une archive à partir des fichiers class1.o , class2.o , class3.o , la commande suivante serait utilisée :
- ar rcs libclass.a classe1.o classe2.o classe3.o
Pour compiler un programme qui dépend de class1.o , class2.o et class3.o on pourrait faire :
- cc main.c -L. -lclasse
au lieu de:
- cc main.c classe1.o classe2.o classe3.o
Les options -L et -l indiquent à l'éditeur de liens de rechercher la bibliothèque " libclass.a " dans le répertoire courant.
Détails du format de fichier
Le format ar n'a jamais été standardisé, les archives modernes sont basées sur un format commun avec deux variantes connues, BSD et GNU .
Historiquement, il y a eu d'autres variantes, notamment AIX (petit), AIX (grand) et Coherent, qui différaient considérablement du format commun.
deb utilisent le format commun .
Un fichier ar commence par un en-tête global, suivi d'un en-tête et d'une section de données pour chaque fichier stocké dans le fichier ar.
La section de données est alignée sur 2 octets, si elle devait se terminer par une période impaire, un "\n" est utilisé comme remplissage.
En-tête global
L'en-tête global est un champ unique contenant la chaîne ASCII magique " !<arch>" suivie d'un seul caractère de contrôle LF
En-tête de fichier
Le format commun est le suivant.
| de position | position haute | Nom de domaine | Format de champ |
|---|---|---|---|
| 0 | quinze | nom de fichier | ASCII |
| 16 | 27 | Date du fichier | Décimal |
| 28 | 33 | Identifiant du propriétaire | Décimal |
| 3. 4 | 39 | identifiant de groupe | Décimal |
| 40 | 47 | mode fichier | octal |
| 48 | 57 | Taille du fichier en octets | Décimal |
| 58 | 59 | en-tête magique | '\n |
En raison des limites de format et de longueur des noms de fichiers, les versions GNU et BSD ont développé différentes méthodes pour obtenir des noms de fichiers étendus.
Variante BSD
BSD ar stocke les noms de fichiers étendus en plaçant la chaîne "#1/" suivie de la longueur du nom de fichier dans le champ du nom de fichier et en ajoutant le nom de fichier réel à l'en-tête du fichier.
Variante GNU
GNU ar stocke plusieurs noms de fichiers étendus dans la section de données d'un fichier avec le nom "//", cet enregistrement est référencé par les futurs en-têtes. Un en-tête fait référence à un nom de fichier étendu en stockant un "/" suivi d'une position décimale au début du nom de fichier dans la section de données du nom de fichier étendu.
GNU ar utilise un '/' pour marquer la fin du nom de fichier, cela vous permet d'utiliser des espaces sans utiliser de nom de fichier étendu.
GNU ar utilise le nom de fichier spécial "/" pour marquer que l'entrée suivante contient une table de recherche de symboles, qui est utilisée dans les bibliothèques ar pour accélérer l'accès
Voir aussi
- .deb
- format de fichier
- UNIX
- Addendum : Liste des programmes Unix
Liens externes
- ar(1) – Commandes générales dans le manuel d' Ubuntu
- Page de manuel GNU binutils ar
- Page de manuel de la septième édition d'Unix