Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по программированию.pdf
Скачиваний:
44
Добавлен:
28.03.2015
Размер:
207.84 Кб
Скачать

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

лы clean, install и uninstall, позволяющие очищать информацию, ненужную после создания программы, устанавливать программу в систему и отменять установку программы соответственно. Приведем пример Makefile для Linux:

HelloWorld: 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 clean:

rm -f HelloWorld foo.o main.o install:

cp HelloWorld /usr/local/bin/HW uninstall:

rm -f /usr/local/bin/HW

Имеющийся Makefile позволяет выполнять следующие команды:

собрать из исходных файлов программу;

make

удалить информацию ненужную после сборки программы. В правиле clean стоит команда rm, удаляющая исполняемый и объектные файлы. Флаг -f означает, что, если удаляемый файл отсутствует, программа не должна выдавать сообщений. Правило clean приводит проект к состоянию, в каком он был до команды make. Очистка выполняется после установки программы в систему;

make clean

установить программу в систему. Правило install помещает исполняемый файл в каталог /usr/local/bin – стандартный каталог размещения пользовательских программ. После этого её можно вызывать

13

набором имени (HelloWorld);

make install

отменить установку программы.

make uninstall

Следует учесть что выполнение установки и обратной её операции в Linux требует привилегий администратора, т.е. выполнения следующих команд:

su root

make install

exit

14