2009-10-11 13 views
3

Je ne comprends pas vraiment ce que l'utilitaire ar fait sur les systèmes Unix.Que fait exactement l'utilitaire "ar"?

Je sais qu'il peut être en quelque sorte utilisé pour créer des bibliothèques c, mais tout ce que la page de l'homme me dit est qu'il est utilisé pour créer des archives à partir de fichiers, ce qui semble similaire à, par exemple, tar ....

+1

l'homme est votre ami: man ar – eveliotc

+0

J'ai essayé la page de manuel et je n'étais pas très sage d'elle ... mais merci. –

+0

Il s'agit d'une question sur la programmation - et l'utilisation de la commande 'ar' pour faire des bibliothèques à l'usage des programmeurs lors de la programmation. Il n'appartient pas à SuperUser. –

Répondre

7

L'objectif principal est de prendre des fichiers objet individuels (*.o) et de les regrouper dans un fichier de bibliothèque statique (*.a). Le fichier .a contient un index qui permet à l'éditeur de liens de localiser rapidement les symboles dans la bibliothèque.

Tar ne crée pas de fichiers compréhensibles par les liens.

+0

La causalité va un peu dans l'autre sens: l'éditeur de liens unix original a été écrit pour utiliser l'utilitaire "ar" pour stocker ses bibliothèques. Ce n'est que plus tard que l'utilitaire "tar" est devenu populaire, en grande partie en raison d'une meilleure interopérabilité avec les périphériques à bande. –

2

Exactement, ar est un archiveur. Il prend simplement un ensemble de fichiers objets (* .o) et les place dans une archive que vous appelez une bibliothèque statique.

+0

pourquoi ne pas utiliser tar, alors? –

+0

raisons historiques, la plupart du temps. – lfaraone

+4

... parce que 'tar' a été utilisé pour stocker des fichiers sur ** bande ** (d'où le 't'). Il ne sert à rien d'avoir vos librairies sur une bande - vous devrez attendre que l'opérateur monte le bon volume, juste pour lier votre programme. –

1

Il prend du code sous la forme de fichiers objets (.obj, .o, etc.) et crée une bibliothèque statique (archive). La bibliothèque peut alors être incluse lors de la liaison avec ld pour inclure le code objet dans votre exécutable.

Jetez un oeil à l'exemple d'utilisation dans le Wikipedia article.

1

Vous pouvez exécuter man ar pour obtenir l'image complète. Here est une copie de cela sur le web.

Pour citer:

Le programme GNU ar crée, modifie, et des extraits d'archives. Une archive est un fichier unique contenant une collection d'autres fichiers dans une structure qui permet de récupérer les fichiers individuels d'origine (appelés membres de l'archive).

ar est considéré comme un utilitaire binaire car les archives de ce type sont généralement utilisées comme bibliothèques contenant les sous-programmes les plus courants.

4

ar est un archiveur d'usage général, tout comme tar. Il "arrive" à être utilisé principalement pour créer des archives de bibliothèque statiques, l'un de ses usages traditionnels, mais vous pouvez toujours l'utiliser pour l'archivage général, bien que tar serait probablement un meilleur choix. ar est également utilisé pour les paquets Debian .deb.

1

ar est spécifiquement pour les archives (ou bibliothèques) de code objet; tar est pour les archives de fichiers arbitraires. On peut deviner pourquoi GNU fait référence à ces archives, dans d'autres environnements, cet utilitaire est appelé «bibliothécaire», et les fichiers résultants ne sont que des bibliothèques.