методичка-1
.pdfФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ - УЧЕБНО-НАУЧНО- ПРОИЗВОДСТВЕННЫЙ КОМПЛЕКС» ЕСТЕСТВЕННО-НАУЧНЫЙ ФАКУЛЬТЕТ
Кафедра «Прикладная математика и информатика»
В.Г. Абашин, В.Ю. Преснецова
ИНФОРМАТИКА. КРОССПЛАТФОРМЕННЫЕ ИНСТРУМЕНТЫ ДЛЯ СОЗДАНИЯ ПРИКЛАДНЫХ ПРОГРАММ
Методические указания по выполнению лабораторных работ
Дисциплина – «Информатика» Для технических направлений
Допущено ФГБОУ ВПО «Госуниверситет - УНПК» для использования в учебном процессе в качестве методических указаний для высшего профессионального образования
Орел 2012
3
Авторы: канд. техн. наук, доц. каф. ПМиИ |
В.Г. Абашин |
аспирант каф. ПМиИ |
В.Ю. Преснецова |
Рецензент: канд. техн. наук, доц. каф. ПМиИ |
Е.Г. |
Демина |
|
Методические указания содержат теоретический материал по изучению компиляторов GCC и G++, а также требования по оформлению и выполнению лабораторных работ. Для освоения излагаемого материала требуется умение работать с файловой системой Windows или Linux, уметь работать с текстовыми редакторами, устанавливать программы, работать с командной строкой и владеть основами языка С или С++.
Предназначены студентам, обучающимся по техническим направлениям.
Редактор А.А. Федотов Технический редактор Т.Г. Денисова
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Государственный университет - учебно-научно- производственный комплекс»
Лицензия ИД № 00670 от 05.01.2000 г.
Подписано к печати 01.12.2011 г. Формат 60x90 1/16. Усл. печ. л. 2,0. Тираж 36 экз.
Заказ №________
Отпечатано с готового оригинал-макета на полиграфической базе ФГБОУ ВПО «Госуниверситет - УНПК»,
302030, г. Орел, ул. Московская, 65.
© ФГБОУ ВПО «Госуниверситет - УНПК», 2012
4
|
СОДЕРЖАНИЕ |
|
Введение................................................................................................... |
6 |
|
1. |
Компилятор GCC................................................................................. |
7 |
2. |
Компилятор G++................................................................................ |
10 |
3. |
Автоматизация компиляции и сборки программ с помощью |
|
утилиты make......................................................................................... |
12 |
|
4. |
Отладчик gdb...................................................................................... |
15 |
5. |
Средства обеспечения переносимости и распространения |
|
Makefile .................................................................................................. |
19 |
|
7. |
Задания для самостоятельного выполнения.................................... |
27 |
Заключение............................................................................................. |
31 |
|
Список литературы................................................................................ |
32 |
|
Приложение 1. Список ключей компиляторов GCC и G++ ............... |
33 |
|
Приложение 2. Список команд для отладчика gdb............................. |
34 |
5
Введение
Компилятор GCC распространяется на условиях лицензии GNU.
Проект GNU был основан в 1984 году Ричардом Столлманом. С по-
мощью этого проекта программисты смогли узаконить сотрудничест-
во между собой для разработки некоммерческого программного обеспечения (ПО). Лицензия этого проекта не позволяет присваивать кому-то эксклюзивные права на ПО. С первых дней в основной пакет ПО входит набор инструментов для всех этапов программирования. К
этим инструментам относятся компиляторы GCC, G++, отладчик gdb,
утилиты make, configure. Несмотря на то, что общепринятым является использование инструментов GNU в среде Linux, их использование будет рассматриваться и в среде Windows. Для работы с инструмен-
тарием в Windows необходимо произвести установку пакета MinGW
идобавить к переменной среды окружения Path значение
c:\MinGW\bin.
6
1. Компилятор GCC
Изначально аббревиатура GCC означала GNU C Compiler, но с добавлением компиляторов для языков C++, Java, Ada и др. её значе-
ние изменилось на GNU Compiler Collection. Назначение компилятора языка С из набора GCC, преобразование файлов с исходным кодом программы на языке С в исполняемые файлы. Все операции с компи-
лятором производятся из командной строки. На сегодняшний момент существуют около десятка сред, представляющих графический ин-
терфейс для работы с GCC и другими описываемыми инструментами,
но в обучающих целях будет рассмотрена работа именно из команд-
ной строки.
Для создания исполняемого файла необходим текстовый редак-
тор. Если используется операционная система (ОС) Linux, используй-
те редактор vi или emacs. Для графического режима используйте
Gedit, KWrite, Kate. В ОС Windows используйте текстовый редактор
"Edit" или редактор с оконным интерфейсом "Блокнот".
Вначале создайте папку в доступном месте с именем HW. В
описываемом примере использовалась папка C:\HW. Для создания папки можно использовать команду mkdir (mkdir c:\HW). Для перехо-
да в каталог используете команду cd (cd c:\HW). Создадим текстовый файл в папке HW, и назовем его helloworld.c. Запишем в файл сле-
дующий код:
#include <stdio.h>
int main(void) {
printf("Hello world!\n");
return(0);
}
Обратите внимание что по стандарту языка С, последняя строка должна быть пустой. Для преобразования текстового файла в испол-
7
няемый наберите в командной строке (консоле):
gcc helloworld.c
Если компилятор установлен правильно, то после введенной ко-
манды появится приглашение командной строки. В папке HW должен появится исполняемый файл. В Linux он будет называться a.out или a.
В Windows он будет называться a.exe. Для проверки изменений со-
держимого каталога используйте команды ls или dir в Linux или dir в Windows.
Для выполнения созданной программы наберите в командной строке её имя. Для Linux выполните команду: ./a.out или ./a,
для Windows a.exe. В результате выполнения команды на экран бу-
дет выведена фраза:
Hello world!
Чтобы задать название получаемого исполняемого файла
(HW.exe), для компиляции используйте команду для Windows:
gcc helloworld.c -o HW.exe
Для Linux используйте команду:
gcc helloworld.c -o HW
Программа GCC выполняет три этапа: обработку препроцессо-
ром, компиляцию, компоновку (линковку).
В приведенном примере препроцессор заменяет строчку
#include <stdio.h> на содержимое файла stdio.h. Чтобы по-
смотреть результат работы препроцессора и сохранить этот результат в файле наберите команду:
gcc -E helloworld.c -o helloworld.cpp
Следующий этап — компиляция, которая преобразовывает ис-
ходный текстовый файл в объектный:
gcc -c helloworld.c
В результате получается объектный файл helloworld.o. Для соз-
дания объектного файла из исходного кода обработанного препро-
8
цессором (helloworld.cpp) используется опция -x указывающая язык программирования и тип файла. Обработанный препроцессором файл С++ имеет тип cpp-output:
gcc -x cpp-output -c helloworld.cpp
Компоновка объединяет созданный компиляцией объектный файл с объектным файлом, который описывает stdio.h. В результате получается исполняемый файл. Например:
gcc helloworld.o -o helloworld
Знание всех этапов превращения текстового файла в программу необходимо для работы с большими проектами и исправления оши-
бок в самом инструментарии создания программ. Кроме того следует учесть что программирование с высокой степенью сложности проек-
тов выполняется на разных языках программирования, которые ис-
пользуются в одном проекте. В этом случае для каждого файла необ-
ходимо использовать свой компилятор, а затем соединять объектные файлы в одну программу.
9
2. Компилятор G++
Основным отличием компилятора G++ от GCC это подключае-
мые по умолчанию библиотеки языка С++. Несмотря на возможность создавать программы используя язык С++ с помощью компилятора
GCC, в таких случаях рекомендуется использовать G++. Все флаги и опции у G++ такие же, как и у GCC.
Рассмотрим исходный код на языке С++. Программа записана в файле main.cpp:
#include <iostream> #include "foo.h"
using namespace std;
int main (void) {
MESSAGE *message = new MESSAGE; message->show_message(); delete message;
return 0;
}
Класс MESSAGE описан в файлах foo.cpp и foo.h.
Файл foo.h:
#ifndef FOO_H_ #define FOO_H_
using namespace std;
class MESSAGE { public:
void show_message (void);
10
};
#endif
Файл foo.cpp:
#include <iostream> #include "foo.h"
using namespace std;
void MESSAGE::show_message (void) { cout << "Hello world!" << endl;
}
Для того чтобы получить исполняемый файл наберите команду,
если используется Windows:
g++ foo.cpp main.cpp -o HelloWorld.exe
или
g++ foo.cpp main.cpp -o HelloWorld
если используется Linux. В результате будет получен исполняе-
мый файл.
Список ключей компиляторов, приведен в приложении 1.
11
3. Автоматизация компиляции и сборки программ с помощью
утилиты make
Современные интегрированные среды быстрой разработки про-
грамм, такие как Delphi, Visual C++ .NET, KDeveloper и другие ис-
пользую средства автоматизации компиляции программ. Для этого используется текстовый файл, написанный по определенным прави-
лам и называемый Makefile. Этот же инструмент доступен и для ком-
пиляторов командной строки.
Makefile является списком правил. Каждое правило начинается с указателя, называемого "Цель". После него стоит двоеточие, далее через пробел указываются зависимости. Конечной целью сборки про-
граммы HelloWorld исполняемый файл HelloWorld зависящий от объ-
ектных файлов foo.o и main.o. Поэтому они должны быть собраны прежде HelloWorld. После зависимостей пишутся команды. Каждая команда должна находиться на отдельной строке, и отделяться от на-
чала строки клавишей Tab. Правила Makefile могут содержать пере-
менные, конструкции ветвления, циклы.
Приведем пример Makefile для программы написанной на C++ в
ОС Windows:
HelloWorld.exe: foo.o main.o
g++ foo.o main.o -o HelloWorld foo.o: foo.cpp foo.h
g++ -c foo.cpp main.o: main.cpp foo.h
g++ -c main.cpp
Выполняется Makefile утилитой make, т.е. необходимо находясь в каталоге с файлом Makefile дать команду:
make
Makefile в операционной системе Linux обычно содержит разде-
12