Чтение онлайн

на главную - закладки

Жанры

Программирование для Linux. Профессиональный подход

Самьюэл Алекс

Шрифт:

Посылая письмо или сообщение, не забудьте указать название книги и ее авторов, а также ваш e-mail. Мы внимательно ознакомимся с вашим мнением и обязательно учтем его при отборе и подготовке к изданию последующих книг. Наши координаты:

E-mail:

info@williamspublishing.com

WWW

http://www.williamspublishing.com

Часть I

Сложные вопросы программирования в среде UNIX/Linux

Глава 1

Начало

В этой главе рассказывается о том, как выполнять базовые операции, связанные с написанием программы на языке С или C++ в среде Linux. В частности, описываются процессы создания и модифицирования исходного текста на C/C++, компиляции

этого текста и отладки полученного результата. Те, кто уже знакомы с программированием в Linux, могут смело переходить к главе 2, "Написание качественных программ для среды GNU/Linux".

При изложении материала всей книги мы предполагаем, что читатели знакомы с языком программирования С и C++ и наиболее распространенными функциями стандартной библиотеки языка С. Тексты программ в книге написаны на С, за исключением случаев, когда рассматривается конкретная особенность программирования на C++. Мы также предполагаем, что читатели умеют выполнять базовые операции в интерпретаторе команд Linux, в частности создавать каталоги и копировать файлы. В связи с тем что многие Linux-программисты начинали свой путь в среде Windows, мы иногда будем указывать на сходства и различия между двумя операционными системами.

1.1. Редактор Emacs

Редактор — это программа, используемая для модификации исходных текстов. В Linux множество редакторов, но, очевидно, наиболее популярный и многофункциональный среди них — GNU Emacs.

Несколько слов о Emacs

Emacs — нечто гораздо большее, чем просто редактор. Это необычайно мощная программа, работая в которой можно, к примеру, читать и отправлять электронные сообщения. Способы настройки и расширения ее функциональных возможностей столь обширны, что заслуживают написания отдельной книги. Представьте, что, находясь в Emacs, вы можете путешествовать в Internet!

Впрочем, мы не ограничиваем свободу читателей, привыкших работать в другом редакторе. Ни один из примеров книги не зависит от использования Emacs. Представленный ниже небольшой вводный курс предназначен для тех из вас, кто еще не успел выбрать свой любимый редактор в Linux.

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

Чтобы запустить редактор Emacs, наберите

emacs
в окне терминала и нажмите <Enter>. Появится окно редактора, в верхней части которого имеется строка меню. Перейдите в меню Files, выберите команду Open Files и наберите имя требуемого файла в строке "мини-буфера" в нижней части экрана. [2] При создании исходного файла на языке С используйте расширения
или
.h
. В случае C++ придерживайтесь расширений
.cpp
,
.hpp
,
или
.H
. Когда файл будет открыт, введите нужный текст и сохраните результат, выбрав команду Save Buffer в меню Files. Чтобы выйти из редактора, воспользуйтесь командой Exit Emacs в меню Files.

2

Пользователи, не работающие в X Window, должны нажать <F10>, чтобы получить доступ к меню.

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

C-x C-f
. (Запись
C-x
означает нажатие клавиши <Control> с последующим нажатием клавиши <x>.) Чтобы сохранить файл, введите
C-x C-s
, а чтобы выйти из Emacs —
C-x C-c
. Лучше узнать о возможностях редактора можно с помощью встроенного учебника, доступного через команду Emacs Tutorial в меню Help. В нем приведено множество советов, которые помогут пользователям научиться эффективнее работать с Emacs.

1.1.2.

Автоматическое форматирование

Программисты, привыкшие работать в интегрированной среде разработки, оценят имеющиеся в Emacs средства автоматического форматирования кода. При открытии исходного файла, написанного на C/C++, редактор самостоятельно определяет наличие в нем программного кода, а не просто текста. Если нажать клавишу <Tab> в пустой строке, редактор переместит курсор в нужную позицию, определяемую положением предыдущей строки. Когда клавиша <Tab> нажимается в строке, содержащей какой-то текст, сдвигается вся строка. Предположим, к примеру, что набран такой текст:

int main {

printf("Hello, world\n");

}

Нажатие клавиши <Tab> в строке вызова функции

printf
приведет к следующему результату:

int main {

printf("Hello, world\n");

}

По мере работы с редактором Emacs читатели изучат и другие средства форматирования. Особенность редактора заключается в том. что он позволяет программировать практически любые операции, связанные с автоматическим форматированием. Благодаря этому были реализованы режимы редактирования множества видов документов, разработаны игры [3] и даже СУБД.

3

Введите команду

M-x dunnet
, если хотите поиграть в старомодную приключенческую игру.

1.1.3. Синтаксические выделения

Помимо форматирования программного кода Emacs упрощает чтение файлов, написанных на C/C++, выделяя цветом различные синтаксические элементы. Например, ключевые слова могут быть выделены одним цветом, названия встроенных типов данных — другим, а комментарии — третьим. Подобный подход облегчает нахождение некоторых широко распространенных синтаксических ошибок.

Чтобы включить режим цветовых выделений, откройте файл

~/.emacs
и вставьте в него такую строку:

(global-font-lock-mode t)

Сохраните файл, выйдите из Emacs и перезапустите редактор. Теперь можете открыть нужный исходный файл и наслаждаться!

Внимательные читатели, возможно, обратили внимание на то, что строка, вставленная в файл

.emacs
, выглядит написанной на языке LISP. Это и есть LISP! Большая часть редактора Emacs реализована именно на этом языке. На нем же можно писать расширения к редактору.

1.2. Компиляторы GCC

Компилятор превращает исходный текст программы, понятный человеку, в объектный код. исполняемый компьютером. Компиляторы, доступные в Linux-системах, являются честью коллекции GNU-компиляторов, известной как GCC (GNU Compiler Collection). [4] В нее входят компиляторы языков С, C++, Java, Objective-C, Fortran и Chill. В этой книге нас будут интересовать лишь первые два.

Предположим, имеется проект, в который входят два исходных файла: один написан на С (

main.c
; листинг 1.1), а другой — на C++ (
reciprocal.cpp
; листинг 1.2). После компиляции оба файла компонуются вместе, образуя программу
reciprocal
, [5] которая вычисляет обратное заданного целого числа.

4

Дополнительную информацию о GCC можно получить по адресу

http://gcc.gnu.org
.

5

В Windows исполняемые файлы обычно имеют расширение

.exe
, а в Linux - вообще не имеют его. Поэтому в Windows эквивалент данной программы будет, скорее всего, называться
reciprocal.exe
.

Поделиться:
Популярные книги

Мастер...

Чащин Валерий
1. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
6.50
рейтинг книги
Мастер...

Жених из гроба

Сотис Майя
1. Гробокопательница
Фантастика:
юмористическое фэнтези
сказочная фантастика
фэнтези
5.00
рейтинг книги
Жених из гроба

Ищу жену с прицепом

Рам Янка
2. Спасатели
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Ищу жену с прицепом

Гримуар тёмного лорда I

Грехов Тимофей
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Гримуар тёмного лорда I

Заклятие предков

Прозоров Александр Дмитриевич
3. Ведун
Фантастика:
фэнтези
альтернативная история
8.49
рейтинг книги
Заклятие предков

Крепость над бездной

Лисина Александра
4. Гибрид
Фантастика:
боевая фантастика
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Крепость над бездной

Рота Его Величества

Дроздов Анатолий Федорович
Новые герои
Фантастика:
боевая фантастика
8.55
рейтинг книги
Рота Его Величества

Экспансия: Сотрудничество. Том 5

Белов Артем
5. Планетарный десант
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Экспансия: Сотрудничество. Том 5

Отверженный III: Вызов

Опсокополос Алексис
3. Отверженный
Фантастика:
фэнтези
альтернативная история
7.73
рейтинг книги
Отверженный III: Вызов

Князь Серединного мира

Земляной Андрей Борисович
4. Страж
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Князь Серединного мира

Возвышение Меркурия. Книга 8

Кронос Александр
8. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 8

Эволюционер из трущоб. Том 5

Панарин Антон
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 5

Локки 7. Потомок бога

Решетов Евгений Валерьевич
7. Локки
Фантастика:
аниме
эпическая фантастика
фэнтези
5.00
рейтинг книги
Локки 7. Потомок бога

Черный Маг Императора 4

Герда Александр
4. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 4