Читаем Linux: Полное руководство полностью

Основным C-компилятором в Linux служит gcc (GNU С Compiler). Если вы не установили средства разработки при установке дистрибутива, самое время сделать это сейчас. Запустите менеджер пакетов (рис. 21.1) и установите следующие пакеты:

♦ gcc — сам компилятор gcc;

♦ gcc-c++ — поддержка С++;

♦ gcc-doc — документация по gcc (очень рекомендую установить);

♦ compat-gcc — пакет, содержащий средства gcc для обратной совместимости. Данный пакет вам нужен, если вы планируете писать программы для более старых систем, чем ваша;

♦ compat-gcc-c++ — то же, что и compat-gcc, только с поддержкой С++;

♦ compat-cpp — препроцессор cpp для обратной совместимости;

♦ binutils — набор вспомогательных утилит, о которых мы поговорим в последнем пункте этой главы;

♦ glibc-devel — содержит библиотеки для разработки C-программ;

♦ libbfd — библиотека дескриптора двоичного файла (Binary File Descriptor library);

♦ libstdc++-devel — заголовочные файлы и библиотеки для программирования на С++;

♦ make — утилита, упрощающая процесс сборки больших проектов.

Рис. 21.1. Менеджер пакетов Fedora Core — system-config-packages

<p>21.1.1. Вызов gcc</p>

Формат вызова компилятора такой:

gcc [опции] helloworld.с

Вы написали свою программу на С++? Нет проблем: компиляторы С и С++ являются интегрированными. Чтобы сообщить компилятору, на каком языке вы писали свою программу, нужно указать определенную опцию при вызове компилятора. Но можно поступить проще: по умолчанию компилятор считает, что файлы с расширением .с написаны на языке С, файлы с одним из расширений .C, .cc, .cXX — на языке С++, а файлы с расширением .s — на языке ассемблера.

Как правило, перед компиляцией вызывается программа cpp — препроцессор языка С. Препроцессор создаст файл с расширением .i, если ваша программа написана на языке С. и файл с расширением .ii, если ваша программа написана на С++. Если ваша программа уже прошла препроцессорную подготовку, вы можете передать компилятору gcc файл с расширением .i или .ii и gcc уже не будет вызывать препроцессор для подготовки исходного текста. Как правило, программу cpp редко кто вызывает вручную.

Если не указывать никаких опций, то компилятор создаст в текущем каталоге файл a.out, содержащий исполняемый код. Для тех, кто изучал другой язык, я на всякий случай приведу текст первой программы на С (листинг 21.1).

Листинг 21.1. Файл helloworld.c

#include

main() {

 printf("Hello World!\n");

}

А сейчас рассмотрим основные опции компилятора. Обо всех остальных опциях вы сможете узнать по команде man gcc.

<p>21.1.2. Общие опции</p>

Из общих опций наиболее интересны три: -х, -с и -о.

С помощью опции -х можно указать язык, на котором написан исходный код, например,

gcc -х с helloworld.c

В качестве языка программы вы можете указать:

♦ с, если ваша программа написана на С;

♦ objective_c, если ваша программа написана на Objective С;

♦ c-header, если ваша программа является заголовком С;

♦ C++, если вы написали программу на С++;

♦ assembler, если вы написали программу на ассемблере.

Существуют и другие варианты, но они не столь важны.

Опция -c используется, если вы хотите только откомпилировать вашу программу, но не вызвать компоновщик. В результате будет создан объектный файл с расширением .

Опция позволяет указать имя результирующего файла. Это очень полезная опция, потому что имя a.out мало кого устраивает:

gcc -о helloworld helloworld.c

Очень полезна опция -v, которая выводит различную информацию о стадиях компиляции. Кроме того, эта опция выводит версию компилятора.

<p>21.1.3. Опции языка</p>

Из всех опций языка мне пригодилась лишь опция ANSI, которая выключает все функции GNU С, несовместимые со стандартом ANSI. К таким функциям относятся asm, inline, typeof и другие.

<p>21.1.4. Опции препроцессора</p>

Эти опции задают режим предварительной обработки исходного кода (до собственно компиляции).

Очень важной является опция -include <файл>. Она позволяет «прогнать» через препроцессор сперва содержимое указанного файла, а только после этого файл, который передан препроцессору. В результате указанный файл будет откомпилирован раньше, чем все остальные.

Опция -nostdinc запрещает использование системного каталога, содержащего файлы заголовков. При ее включении компилятор будет искать заголовки в каталогах, указанных в опции -I и в текущем каталоге.

Опция -nostdinc++ запрещает использование стандартных файлов заголовков для языка С++.

<p>21.1.5. Опции компоновщика</p>

Опция компоновщика -l позволяет явно указать имя библиотеки, которая будет использоваться при сборке вашей программы. Например,

gcc -lmylibrary myfile.c

Перейти на страницу:

Все книги серии Полное руководство

Похожие книги

Полное руководство по Microsoft Windows XP
Полное руководство по Microsoft Windows XP

В книге известного американского автора описывается среда ОС Windows XP и принципы ее функционирования, приведен сравнительный анализ Windows XP с предшествующими версиями операционной системы Windows. Рассматриваются вопросы применения и модификации нового интерфейса с целью получения прямого доступа ко всем функциям Windows XP обсуждаются варианты подключения к компьютерным сетям. Несколько разделов посвящены работе с реестром и конфигурационными файлами, мультимедийным функциям и разнообразным системным службам, а также методам решения проблем с программным обеспечением и оборудованием. Особое внимание уделено обеспечению безопасности операционной системы.Издание адресовано пользователям и сетевым администраторам, желающим активно применять возможности операционной системы Windows XP (в том числе и недокументированные).

Джон Поль Мюллер , Питер Нортон

ОС и Сети, интернет / ОС и Сети / Книги по IT