- •Введение
- •1. Компилятор GCC
- •2. Компилятор G++
- •3. Автоматизация компиляции и сборки программ с помощью утилиты make
- •4. Отладчик gdb
- •5. Средства обеспечения переносимости и распространения Makefile
- •7. Задания для самостоятельного выполнения
- •Заключение
- •Список литературы
- •Приложение 1. Список ключей компиляторов GCC и G++
- •Приложение 2. Список команд для отладчика gdb
Заключение
В данном методическом пособии изложен базовый уровень владения инструментарием GNU для создания исполняемых файлов. На основании этих знаний студент должен самостоятельно расширять свой уровень владения инструментарием доводя его до профессионального уровня.
Дополнительным источником информации по данной теме является литература, а также команды man и info. Например, чтобы посмотреть полный список ключей поддерживаемых используемой версии GCC и их описание необходимо набрать в строке:
man gcc
Для выхода из справочной системы используйте клавишу q. Пример получение информации по функции fopen:
man fopen
Обращение к справочной системе info по функции fopen производится командой:
info fopen
Обращаться к справочным системам можно и по содержимому стандартных файлов:
man stdio.h
info stdio.h
Отличием между info и man в том, что info это описание программы, а man руководство к использованию. Логично предположить что сначала нужно обращаться к описанию программы, а затем к руководству для пользователя:
info gdb
man gdb
31
Список литературы
1.Дмитрий Пантелеичев. Разработка программного обеспечения для Linux. Инструментарий. / http://www.linuxcenter.ru 06/09/2006
2.Митчелл, Марк, Оулдем, Джеффри, Самьюэл, Алекс. Программирование для Linux. Профессиональный подход.: Пер. с англ. - М.: Издательский диск "Вильямс", 2003. - 288 с.
3.Стахнов А.А. Linux. - 2-е изд., перераб. и доп. - Спб.: БХВПетербург, 2007. - 994 с.
4.Эбен Майкл. FreeBSD. Mega Edition + 10 Gb / Майкл Эбен, Брайан Таймэн; Пер. с англ. - Спб.: ООО "ДиаСофтЮП", 2005. - 864 с.
32
Приложение 1. Список ключей компиляторов GCC и G++
-c — используется для получения объектного файла, например:
gcc -c main.c
-I — сообщает нахождение заголовков, например:
gcc -I ../include foo.h
-D NDEBUG — отключение отладочной информации, примеры:
gcc -D NDEBUG foo.cpp
gcc -D NDEBUG=3 foo.cpp
-02 — включение оптимизации кода второго уровня, например:
gcc -02 main.cpp
-o — используется для задания имени исполняемого файла, например:
gcc helloworld.c -o HW.exe
-E — используется для обработки файла препроцессором, например:
gcc -E helloworld.c -o helloworld.cpp
-x — используется для создания объектных файлов из файлов обработанных препроцессором, например:
gcc -x cpp-output -c helloworld.cpp
33
Приложение 2. Список команд для отладчика gdb
backtrace – выводит весь путь к текущей точке останова, то есть названия всех функций, начиная от main(); иными словами, выводит весь стек функций;
break – устанавливает точку останова; параметром может быть номер строки или название функции;
clear – удаляет все точки останова на текущем уровне стека (то есть в текущей функции);
continue – продолжает выполнение программы от текущей точки до конца;
delete – удаляет точку останова или контрольное выражение; display – добавляет выражение в список выражений, значения кото-
рых отображаются каждый раз при остановке программы;
finish – выполняет программу до выхода из текущей функции; отображает возвращаемое значение,если такое имеется;
info breakpoints – выводит список всех имеющихся точек останова; info watchpoints – выводит список всех имеющихся контрольных
выражений;
list – выводит исходный код; в качестве параметра передаются название файла исходного кода, затем, через двоеточие, номер начальной и конечной строки;
next – пошаговое выполнение программы, но, в отличие от команды step, не выполняет пошагово вызываемые функции;
print – выводит значение какого-либо выражения (выражение передаётся в качестве параметра);
run – запускает программу на выполнение;
set – устанавливает новое значение переменной step – пошаговое выполнение программы;
watch – устанавливает контрольное выражение, программа остановится, как только значение контрольного выражения изменится;
34