Что делает опция "rcs"в ar?

Я прочитал файл man, но это не помогает. "rcs" кажется самым популярным вариантом для перехода на ar, но смысл не так ясен для меня.

Итак, " c "означает создание нового архива, но тогда зачем использовать"r"? что, по-видимому, означает "заменить"? Что опция "s"сделает с выходом?

3 ответов


чтение страница руководства (для ar) хорошее начало:

c

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

r

вставить файлы ... в архив (с заменой). Этот операция отличается от q тем, что все ранее существующие члены удаляются, если их имена совпадают с добавляемыми.

s

запишите индекс объектного файла в архив или обновите существующий во-первых, даже если в архив не вносится никаких изменений. Вы можете использовать этот флаг модификатора либо с любой операцией, либо в одиночку. Бег "ar s " на архив эквивалентно работает ranlib на нем.

сравнение с POSIX, вы можете заметить одно отличие: GNU ar делает опции префикса " - " необязательными сами по себе.

архив can содержат другие элементы, кроме объектных файлов (хотя это делается не часто). Архивы, содержащие объектные файлы, требуют дополнительного обслуживания (например,ranlib), чтобы они могли использоваться компоновщиком.

по словам обоснование в POSIX ar,-s вариант возник в BSD (Система V сделал это автоматически). Тем не менее, работает ranlib сама по себе преобладающая практика (-s редко используется). Интересно, что POSIX не имеет ranlib и заменит ranlib во множестве файлов Makefile, которые были написаны для запуска на различных платформах.


Это означает " вставить элемент files... в архив (с заменой)."


читать инструкции для ar помогает, Но я объясню это более подробно. ar -rcs - наиболее вероятная команда, которую вы будете использовать при использовании Makefile для компиляции библиотеки. r означает, что если библиотека уже существует, замените старые файлы в библиотеке новыми файлами. c означает создание библиотеки, если она не существует. s можно увидеть, что означает "сортировка" (создание отсортированного индекса) библиотеки, так что она будет индексироваться и быстрее получать доступ к функциям в библиотека. Следовательно,rcs можно увидеть, что означает replace, create, sort.