C++. Сборник рецептов | страница 25




Табл. 1.10. Команды для создания архива libjohnpaul.lib или libjohnpaul.а

ИнструментарийКомандная строка
GCC (Unix) Intel (Linux) Comeau (Unix)ar ru libjohnpaul.a john.c paul.о johnpaul.o ranlib libjohnpaul.a
GCC (Windows)ar ru libjohnpaul.a john.o paul.o johnpaul.о
Visual C++lib -nologo -out:libjohnpaul.lib john.obj paul.obj johnpaul.obj
Comeau (with Visual С++)
Intel (Windows)xilib -nologo/out:libjohnpaul.lib john.obj paul.obj johnpaul.obj
Metrowerks (Windows)mwld -library -o libjohnpaul.lib john.obj paul.obj johnpaul.obj
Metrowerks (Mac OS X)mwld -library -o libjohnpaul.a john.о paul.o johnpaul.о
Borlandtlib libjohnpaul lib /u /a /C +john +paul +johnpaul
Digital Marslib -c -n libjohnpaul.lib john.obj paul.obj johnpaul.obj

Например, чтобы скомпилировать john.cpp, paul.cpp и johnpaul.cpp в объектные файлы с помощью GCC, перейдите в директорию johnpaul и введите следующие команды, создающие объектные файлы john.о, paul.о и johnpaul.о:

>$ g++ -с -о john.o john.cpp

>$ g++ -с -о paul.o paul.cpp

>$ g++ -с -о johnpaul.о johnpaul.cpp

Теперь скомпонуйте эти объектные файлы в статическую библиотеку следующим образом.

>$ ar ru libjohnpaul.a john.o paul.o johnpaul.о

>$ ranlib libjohnpaul.а

Обсуждение

При использовании GCC в Unix для создания статической библиотеки вы используете две отдельные команды: во-первых, вы вызываете архиватор ar, а затем вызываете инструмент с именем ranlib. Опция ru говорит ar добавить указанные объектные файлы в указанный архив, если в нем отсутствуют члены с такими же именами, а обновить существующий член архива только в том случае, если указанный объектный файл новее, чем существующий член архива. Традиционно после создания или обновления архива использовался инструмент ranlib, который создает или обновляет таблицу символов архива, т.е. указатель символов, которые присутствуют в содержащихся в архиве объектных файлах. Сегодня на многих системах архиватор ar самостоятельно заботится об обновлении таблицы символов, так что запуск ranlib необязателен. В частности, это верно для версии GNU ar. Однако на некоторых системах компилятор GCC может использоваться в сочетании с не-GNU-версией ar, и по этой причине для безопасности лучше запустить ranlib.

Как вы можете видеть в табл. 1.10, архиватор Borland tlib использует несколько необычный синтаксис: знак «плюс» перед объектными файлами говорит tlib добавить объектные файлы в библиотеку. Остальные командные строки должны быть вам понятны без пояснений.