Любой пример разницы между добавлением модификатора "c" и "s" или нет в команду "ar"

Вы действительно можете закомментировать или полностью удалить вторую строку в вашем sources.list. Существует еще одна очевидная повторяющаяся запись, не являющаяся -, поэтому я бы рекомендовал изменить sources.listна

.
deb http://ftp.us.debian.org/debian jessie main contrib
deb http://security.debian.org jessie/updates main contrib
deb http://ftp.us.debian.org/debian jessie-updates main
deb https://deb.torproject.org/torproject.org jessie main
deb-src https://deb.torproject.org/torproject.org jessie main

(отбросив non-freeи отбросив ftp.debian.orgв пользуftp.us.debian.org).

Вы можете сделать резервную копию и отредактировать файл одной командой:

sudo sed -i.bak '1,2d;s/ non-free//' /etc/apt/sources.list

Будет создана копия исходного файла в /etc/apt/sources.list.bak.

-1
27.12.2019, 04:53
2 ответа

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

Если вы скомпилируете небольшую программу на C, например:

void foo(){}

в объектный файл foo.o, то этот объектный файл будет содержать символfoo, указывающий на скомпилированный код, составляющий функцию foo. Когда вы добавляете такой файл в архив с помощью ar rcs foo.a foo.o, этот символ будет добавлен в таблицу индексов символов, которая используется ldдругими программами для быстрого поиска того, какой файл из архива содержит определенный символ.

Создание этой таблицы символов раньше было необязательным, в зависимости от переключателя s, но теперь это по умолчанию с GNU ar, а переключатель sв основном не используется -. Использование переключателяS(в верхнем регистре с )предотвратит построение такого индекса.

Пример:

$ cc -Wall -c -o foo.o -xc - <<<'void foo(){}'
$ ar rc foo1.a foo.o
$ ar rcS foo2.a foo.o
$ cmp foo1.a foo2.a
foo1.a foo2.a differ: byte 9, line 2
$ nm -s foo1.a

Archive index:
foo in foo.o

foo.o:
0000000000000000 T foo
2
28.01.2020, 05:07

Опция -s(вместо -)создаст таблицу символов в архиве. Это может быть полезно, если он еще не существует или удален с помощью strip. В вашем архиве нет символов для создания таблицы.

Опция -cпросто блокирует вывод ar: creating out.a, который вы получаете, когда не используете -c.

1
28.01.2020, 05:07

Теги

Похожие вопросы