q (Borland) говорят компилятору не печатать в консоли свои название и версию. Это делает вывод компилятора более простым для чтения.

• Опции -EHsc (Visual C++ и Intel для Windows) и -Ае (Digital Mars) говорят компилятору включить обработку исключений С++.

• Опции -GR (Visual C++ и Intel для Windows) и -Ar (Digital Mars) говорят компилятору включить информацию времени исполнения (RTTI).

• Опции -Zc:wchar_t (Visual C++ и Intel для Windows) и - wchar_t (Metrowerks) говорят компилятору распознавать wchar_t как встроенный тип.

• Опция -Zc:forScope (Visual C++ и Intel для Windows) говорит компилятору задействовать современные правила для областей видимости циклов for.

• Опция -cwd include (Metrowerks) говорит компилятору начинать поиск включенного заголовка с директории исходного файла, содержащего директиву include. Это поведение по умолчанию для всех инструментов, кроме Metrowerks.

Далее давайте рассмотрим второе решение нашей проблемы. Вместо того чтобы компилировать и компоновать с помощью одной команды, второй шаг можно разбить на две части.

2a. Введите команду, говорящую компилятору скомпилировать программу в объектный файл без компоновки.

2b. Введите команду, говорящую компоновщику создать исполняемый файл из объектных файлов, созданных на шаге 2a.

В нашем простом случае нет причин для раздельной компиляции и компоновки. Однако раздельная компиляция и компоновка требуются достаточно часто, так что важно, чтобы вы знали, как это делается. Например, при создании статической библиотеки вы должны скомпилировать файлы без компоновки, а затем передать готовые объектные файлы в архиватор.

Команды для компиляции и компоновки в два этапа представлены в табл. 1.8 и 1.9. В некоторых случаях я устанавливаю для объектного файла расширение o[bj], указывающее, что одна и та же командная строка годится и для Windows, и для Unix, за исключением расширения объектного файла.

Табл. 1.8. Команды для компиляции hello.cpp без компоновки

Инструментарий Командная строка
GCC g++ --c -o hello.o hello.cpp
Visual C++ cl -с -nologo -EHsc -GR -Zc:forScope -Zc:wchar_t -Fohello hello.cpp
Intel (Windows) icl -с -nologo -EHsc -GR -Zc:forScope Zc:wchar_t -Fohello hello.cpp
Intel (Linux) icpc -с о hello.о hello.cpp
Metrowerks mwcc -c -wchar_t on -cwd include -o hello.o[bj] hello.cpp
Comeau como -с -o hello.o[bj] hello.cpp
Borland bcc32 -c -q -o hello.obj hello.cpp
Digital Mars dmc -c -Ae -Ar -l<dmcroot>/stlport/stlport -o hello.obj hello.cpp

Табл. 1.9. Команды для компоновки hello.exe или hello

Инструментарий Командная строка
GCC g++ -о hello hello.o
Visual C++ link -nologo -out:hello.exe hello.obj
Intel (Windows) xilink -nologo -out:hello.exe hello.obj
Intel (Linux) icpc -o hello hello.o
Metrowerks mwld -o hello hello.o[bj]
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату