Linux: Полное руководство
Шрифт:
Результатом успешной сборки и установки станут следующие файлы и каталоги:
Осталось добавить в конфигурационный файл вашего загрузчика (п.9.1.1) вариант загрузки с новым ядром. Если вы используете GRUB, впишите в
Если вы вкомпилировали все драйверы, необходимые для загрузки системы, в ядро и поэтому не используете initrd, то строчку initrd можно удалить.
В случае, если ваш загрузчик — LILO, впишите в
И занесите изменения в загрузочную запись:
Теперь перезагрузите систему и попробуйте загрузиться с новым ядром. При появлении каких-либо ошибок вы всегда сможете загрузить старую версию.
Глава 21
Создаем консольное приложение
21.1. Компилятор gcc
В 8 главе вы познакомились с языком командного интерпретатора и убедились, что на нем можно писать полезные сценарии. Но если вы раньше программировали под Windows, то интерпретатора вам маловато будет — понадобятся более мощные средства разработки. Разумеется, они в ОС 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.
21.1.1. Вызов gcc
Формат вызова компилятора такой:
Вы написали свою программу на С++? Нет проблем: компиляторы С и С++ являются интегрированными. Чтобы сообщить компилятору, на каком языке вы писали свою программу, нужно указать определенную опцию при вызове компилятора. Но можно поступить проще: по умолчанию компилятор считает, что файлы с расширением .с написаны на языке С, файлы с одним из расширений .C, .cc, .cXX — на языке С++, а файлы с расширением .s — на языке ассемблера.
Как правило, перед компиляцией вызывается программа cpp — препроцессор языка С. Препроцессор создаст файл с расширением .i, если ваша программа написана на языке С. и файл с расширением .ii, если ваша программа написана на С++. Если ваша программа уже прошла препроцессорную подготовку, вы можете передать компилятору gcc файл с расширением .i или .ii и gcc уже не будет вызывать препроцессор для подготовки исходного текста. Как правило, программу cpp редко кто вызывает вручную.
Если не указывать никаких опций, то компилятор создаст в текущем каталоге файл a.out, содержащий исполняемый код. Для тех, кто изучал другой язык, я на всякий случай приведу текст первой программы на С (листинг 21.1).
Листинг 21.1. Файл helloworld.c
А сейчас рассмотрим основные опции компилятора. Обо всех остальных опциях вы сможете узнать по команде
21.1.2. Общие опции
Из общих опций наиболее интересны три: -х, -с и -о.
С помощью опции -х можно указать язык, на котором написан исходный код, например,
В качестве языка программы вы можете указать:
♦ с, если ваша программа написана на С;
♦ objective_c, если ваша программа написана на Objective С;
♦ c-header, если ваша программа является заголовком С;
♦ C++, если вы написали программу на С++;
♦ assembler, если вы написали программу на ассемблере.
Существуют и другие варианты, но они не столь важны.
Опция – c используется, если вы хотите только откомпилировать вашу программу, но не вызвать компоновщик. В результате будет создан объектный файл с расширением
Опция – о позволяет указать имя результирующего файла. Это очень полезная опция, потому что имя