Ijohnpaul -Igeorgeringo или g++ -o hellobeatles hellobeatles.о ./johnpaul/libjohnpaul.a ./georgeringo/libgeorgeringo.dll.a |
GCC (MinGW) | hellobeatles.о libjohnpaul.a libgeorgeringo.a | g++ -o hellobeatles hellobeatles.o -L./johnpaul -L./georgeringo - Ijohnpaul -Igeorgeringo или g++ -о hellobeatles hellobeatles.o ./johnpaul/libjohnpaul.a. /georgeringo/libgeorgeringo.a |
Visual C++ | hellobeatles.obj libjohnpaul.lib libgeorgeringo.lib | link -nologo -out:hellobeatles.exe -libpath:./johnpaul - libpath:./georgeringo libjohnpaul.lib libgeorgeringo.lib hellobeatles.obj |
Intel (Windows) | | xilink -nologo -out:hellobeatles -libpath:./johnpaul - libpath:./georgeringo.lib johnpaul.lib libgeorgeringo.lib hellobeatles.obj |
Metrowerks (Windows) | | mwld -o hellobeatles -search -L./johnpaul libjohnpaul.lib -search - L./georgeringo libgeorgeringo.lib hellobeatles.obj |
Metrowerks (Mac OS X)¹ | | mwld -o hellobeatles hellobeatles.o -search -L./johnpaul -search - L./georgeringo libjohnpaul libgeorgeringo.dylib |
CodeWarrior 10.0 (Mac OS X)² | | Сверьтесь с документацией Metrowerks |
Borland | | bcc32 -q -WR -WC -ehellobeatles -L./johnpaul - L./georgeringo/libjohnpaul.lib libgeorgeringo.lib hellobeatles.obj |
Digital Mars | | link -noi hellobeatles.obj,hellobeatles.exe,NUL,user32.lib kernel32.lib ..johnpaul .georgeringolibjohnpaul.lib libgeorgeringo.lib,, или link -noi hellobeatles.obj,hellobeatles.exe,NUL,user32.lib kernel32.lib ..johnpaullibjohnpaul.lib ..georgeringo libgeorgeringo.lib,, |
Comeau (Windows) | hellobeatles.obj libjohnpaul.lib libgeorgeringo.lib | como -no_prelink_verbose -o hellobeatles ./johnpaul/libjohnpaul.lib ./georgeringo/libgeorgeringo.lib hellobeatles.obj |
¹ При сборке с помощью указанной командной строки hellobeatles может работать неправильно, так как это приложение будет использовать две копии рабочих библиотек Metrowerks. (См. рецепт 1.23.)
² CodeWarrior 10.0 для Mac OS X будет содержать динамический вариант своих библиотек. При сборке hellobeatles следует использовать именно их. (См. рецепт 1.23.)
Например, при использовании Microsoft Visual Studio .NET 2003 и если она установлена в стандартную директорию на диске С, чтобы собрать hellobeatles.exe из командной строки, перейдите в директорию hellobeatles и введите следующие команды.
> 'С:Program FilesMicrosoft Visual Studio .NET 2003VCin vcvars32.bat'
Setting environment for using Microsoft Visual Studio 2005 tools.
(IF you have another version of Visual Studio or Visual C++ installed
and wish to use its tools from the command line, run vcvars32.bat for
that version.)
> cl -c -nologo -EHsc -GR -Zc:forScope -Zc:wchar_t -MD -I.. -Fohollobeatles hellobeatles.cpp
hellobeatles.cpp
> link -nologo -out:hellobeatles.exe -libpath:../johnpaul -libpath:../georgeringo libjohnpaul.lib libgeorgeringo.lib
> hellobeatles.obj
Обсуждение Поиск включенных заголовочных файлов Опция -I используется для указания пути, где находятся заголовочные файлы. Когда компилятор — а на самом деле препроцессор — встречает директиву include
в виде:
#include 'file'
он обычно пытается вначале найти подключаемый файл, интерпретируя указанный путь относительно директории, в которой находится обрабатываемый исходный файл. Если этот поиск не дает результатов, он пытается найти этот файл в одной из директорий, указанных в опции - I, а затем в директориях, указанных в инструментарии, который часто настраивается с помощью переменных среды.
Эта ситуация аналогична включению заголовочного файла с помощью угловых скобок, как здесь:
#include <file>
за исключением того, что обычно компиляторы не интерпретируют указанный таким образом путь относительно местоположения обрабатываемого исходного файла.
Передача библиотек компоновщику Есть несколько интересных аспектов, связанных с командными строками из табл. 1.13.