Библиотеки
Как мы показали выше, на вход линкера могут подаваться не только файлы объектного кода, но и библиотечные файлы, которые оказываются очень удобным средством хранения объектных модулей, если их становится очень много.
Имя библиотечного файла обычно оканчивается на .a. Имеется команда ar (архив) для создания, пополнения и просмотра библиотечных файлов.
Пример создания библиотеки из трех объектных файлов:
$ ar rcv exam.a test.o check.o prove.o a - test.o a - check.o a - prove.o $
Здесь ключи команды ar означают:
r - заменить (replace) модули в библиотеке;
c - создать (create) библиотеку;
v - печатать включаемые модули (verbose).
Теперь мы можем распечатать содержимое библиотеки командой ar с ключом t (table of content):
$ ar t exam.a test.o check.o prove.o $
и ссылаться на библиотеку в командах вызова компиляторов или линкера, например:
$ ld -o test /lib/frt0.o exam.a -lF77
Следует помнить, что порядок размещения модулей в библиотеке существенен.
Например, если подпрограмма test вызывает подпрограмму check, то test.o должен предшествовать check.o в библиотеке. Для выявления и печати таких зависимостей предназначена команда lorder.