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.о |
Borland | tlib libjohnpaul lib /u /a /C +john +paul +johnpaul |
Digital Mars | lib -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.cp
p
Теперь скомпонуйте эти объектные файлы в статическую библиотеку следующим образом.
>$ 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 добавить объектные файлы в библиотеку. Остальные командные строки должны быть вам понятны без пояснений.