close

Ar (Unix)

Aller à la navigation Aller à la recherche

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

Liens externes