1.2.1. Компиляция одного исходного файла

1.2.1. Компиляция одного исходного файла

Компилятор языка С называется gcc. При компиляции исходного файла нужно указывать опцию . Вот как, например, в режиме командной строки компилируется файл main.с:

% gcc -с main.с

Полученный объектный файл будет называться main.o.

Компилятор языка C++ называется g++. Он работает почти так же, как и gcc. Следующая команда предназначена для компиляции файла reciprocal.cpp:

% g++ -c reciprocal.cpp

Опция говорит компилятору о необходимости получить на выходе объектный файл (он будет называться reciprocal.o). Без неё компилятор g++ попытается скомпоновать программу и создать исполняемый файл.

В процессе написания любой более-менее крупной программы обычно задействуется ряд дополнительных опций. К примеру, опция -I сообщает компилятору о том, где искать файлы заголовков. По умолчанию компиляторы GCC просматривают текущий каталог, а также каталоги, где установлены файлы стандартных библиотек. Предположим, наш проект состоит из двух каталогов: src и include. Следующая команда даст компилятору g++ указание дополнительно искать файл reciprocal.hpp в каталоге ../include :

% g++ -с -I ../include reciprocal.cpp

Иногда требуется задать макроконстанты в командной строке. Например, в коммерческой версии программы нет необходимости осуществлять избыточную проверку утверждения в файле reciprocal.cpp; она нужна лишь в целях отладки. Эта проверка отключается путем определения макроконстанты NDEBUG. Можно, конечно, явно добавить в файл директиву #define, но это означает изменение исходного текста программы. Проще сделать то же самое в командной строке:

% g++ -c -D NDEBUG reciprocal.cpp

Аналогичным образом можно задать конкретный уровень отладки:

% g++ -с -D NDEBUG=3 reciprocal.cpp

При написании коммерческих программ оказываются полезными средства оптимизации кода, имеющиеся в компиляторах GCC. Есть несколько уровней оптимизации; для большинства программ подходит второй. Следующая команда компилирует файл reciprocal.cpp с включенным режимом оптимизации второго уровня:

% g++ -с -O2 reciprocal.cpp

Учтите, что средства оптимизации усложняют отладку программы. Кроме того, бывают случаи, когда наличие оптимизации приводит к проявлению скрытых ошибок, незаметных ранее.

Компиляторы gcc и g++ принимают множество различных опций. Получить их полный список можно в интерактивной документации. Для этого введите следующую команду:

% info gcc

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Установка размера файла, инициализация файла и разреженные файлы

Из книги автора

Установка размера файла, инициализация файла и разреженные файлы Функция SetEndOfFile позволяет переустановить размер файла, используя текущее значение указателя файла для определения его размера. Возможно как расширение, так и усечение файла. В случае расширения файла


Получение исходного кода ядра

Из книги автора

Получение исходного кода ядра Исходный программный код последней версии ядра всегда доступен как в виде полного архива в формате tar (tarball), так и виде инкрементной заплаты по адресу http://www.kernel.org.Если нет необходимости по той или другой причине работать со старыми версиями


Инсталляция исходного кода ядра

Из книги автора

Инсталляция исходного кода ядра Архив исходного кода ядра в формате tar распространяется в сжатых форматах GNU zip (gzip) и bzip2. Формат bzip2 наиболее предпочтителен, так как обеспечивает больший коэффициент сжатия по сравнению с форматом gzip. Архив ядра в формате bzip2 имеет имя


12.5. Переносимость исходного кода

Из книги автора

12.5. Переносимость исходного кода Большинство существующих сетевых приложений написаны для IPv4. Структуры sockaddr_in размещаются в памяти и заполняются, а функция socket задает AF_INET в качестве первого аргумента. При переходе от листинга 1.1 к листингу 1.2 мы видели, что эти


Получение исходного кода

Из книги автора

Получение исходного кода Лучше всего взять исходный код для Asterisk и его пакетов прямо на веб-сайте http://www.asterisk.org или


Получение исходного кода Asterisk

Из книги автора

Получение исходного кода Asterisk Проще всего получить самую последнюю выпущенную версию с помощью программы


Извлечение исходного кода из архива

Из книги автора

Извлечение исходного кода из архива Пакеты, загружаемые с FTP-сервера, являются архивами, в которых содержится исходный код; таким образом, перед компиляцией код требуется извлечь из архива. Если пакеты загружены в другую папку, не /usr/src/, их надо или перенести туда или


19.6.14 Просмотр исходного кода HTML

Из книги автора

19.6.14 Просмотр исходного кода HTML Чтобы хорошо изучить HTML, нужно познакомиться с исходными кодами документов. Обычно браузер имеет для этого специальный режим, иначе придется сохранить документ на диске и затем просмотреть его в обычном текстовом


3.4. Установка программ из исходного кода

Из книги автора

3.4. Установка программ из исходного кода 3.4.1. Идея открытого кода Знаете, почему Linux называется открытой операционной системой? Потому что любому желающему доступен исходный код ее ядра и большинства Linux-приложений. Вы можете загрузить исходный код любой программы и


1.5.4. Сообщество открытого исходного кода

Из книги автора

1.5.4. Сообщество открытого исходного кода Сообщество, первоначально сформированное вокруг ранних дистрибутивов Unix, уже никогда не исчезало. После бурного роста Internet в начале 90-х годов в его ряды было вовлечено все новое поколение увлеченных хакеров с домашними


16.5. Поиск открытого исходного кода

Из книги автора

16.5. Поиск открытого исходного кода Ввиду того, что в Unix-мире доступно огромное количество открытого исходного кода, навыки поиска такого кода для повторного использования могут иметь неоценимое значение — гораздо большее, чем в случае других операционных систем.


14.9.1. Ruby в виде одного файла

Из книги автора

14.9.1. Ruby в виде одного файла Иногда нужно быстро или временно установить Ruby. Или даже включить Ruby в состав собственной программы, поставляемой в виде одного исполняемого файла.Мы уже познакомились с «моментальным инсталлятором» Ruby для Windows. Существуют планы (пока еще не


Компиляция файла CILTypes.il

Из книги автора

Компиляция файла CILTypes.il Даже если вы не добавите никаких членов или иного программного кода в определенные вами типы, вы можете скомпилировать файл *.il в компоновочный блок DLL (иное просто невозможно, поскольку вы не указали метод Main()).Откройте окно командной строки и


1.1.1. Открытие исходного файла C/C++

Из книги автора

1.1.1. Открытие исходного файла C/C++ Чтобы запустить редактор Emacs, наберите emacs в окне терминала и нажмите <Enter>. Появится окно редактора, в верхней части которого имеется строка меню. Перейдите в меню Files, выберите команду Open Files и наберите имя требуемого файла в строке


Повторное использование исходного текста

Из книги автора

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