Что именно делает утилита "ar"? - PullRequest
4 голосов
/ 11 октября 2009

Я не совсем понимаю, что делает утилита ar в системах Unix.

Я знаю, что это может быть каким-то образом использовано для создания библиотек c, но все, что говорит мне эта страница руководства, это то, что она используется для создания архивов из файлов, что похоже на, например, tar ....

Ответы [ 6 ]

7 голосов
/ 11 октября 2009

Основная цель состоит в том, чтобы взять отдельные объектные файлы (*.o) и связать их вместе в файл статической библиотеки (*.a). Файл .a содержит индекс, позволяющий компоновщику быстро находить символы в библиотеке.

Tar не создает файлы, понятные компоновщикам.

4 голосов
/ 11 октября 2009

ar - архиватор общего назначения, как и tar. Просто «случается», что его используют в основном для создания статических библиотечных архивов, одного из его традиционных применений, но вы все равно можете использовать его для архивирования общего назначения, хотя tar, вероятно, будет лучшим выбором. ar также используется для пакетов Debian .deb.

2 голосов
/ 11 октября 2009

Точно, ar является архиватором. Он просто берет набор объектных файлов (* .o) и помещает их в архив, который вы называете статической библиотекой.

1 голос
/ 12 октября 2009

ar специально для архивов (или библиотек) объектного кода; tar предназначен для архивов произвольных файлов. Можно догадаться, почему GNU называет их «архивами», в других средах эта утилита называется «библиотекарем», а полученные файлы - это просто библиотеки.

1 голос
/ 11 октября 2009

Возможно, вы захотите запустить man ar, чтобы получить полную картину. Здесь это копия этого в сети.

Цитировать:

Программа GNU ar создает, модифицирует и извлекает из архивов. архив представляет собой один файл, содержащий коллекцию других файлов в структура, которая позволяет восстановить первоначальный человек файлы (называются членами архива).

ar считается бинарной утилитой, потому что архивы такого типа чаще всего используется в качестве библиотек, содержащих часто используемые подпрограммы.

1 голос
/ 11 октября 2009

Он принимает код в виде объектных файлов (.obj, .o и т. Д.) И создает статическую библиотеку (архив). Затем библиотека может быть включена при связывании с ld для включения объектного кода в ваш исполняемый файл.

Взгляните на пример использования в статье Википедии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...