
- •Лабораторная работа № 1 аргументы и опции программы. Функция getopt(). Знакомство с отладчиком gdb
- •Программа выполнения работы.
- •Отладчик gdb
- •Компиляция для отладки
- •Вход-выход
- •Команды gdb
- •Получение справки
- •Начало выполнения отлаживаемой программы
- •Настройки среды
- •Рабочий каталог отлаживаемой программы
- •Ввод и вывод отлаживаемой программы
- •Часто используемые команды
- •Варианты заданий
- •Контрольные вопросы.
- •Составить отчет
- •Варианты заданий.
- •Контрольные вопросы
- •Лабораторная работа № 3 ввод/вывод в linux. Обработка ошибок
- •Программа работы
- •Составить отчет Краткая теория.
- •Системные вызовы
- •Обработка ошибок.
- •Варианты заданий
- •Варианты:
- •Контрольные вопросы
- •Составить отчет.
- •Варианты заданий
- •Составить отчет.
- •Варианты заданий.
- •Составить отчет. Краткая теория.
- •Создание и удаление каталогов
- •Чтение каталогов
- •Варианты заданий.
- •Контрольные вопросы.
Лабораторная работа № 1 аргументы и опции программы. Функция getopt(). Знакомство с отладчиком gdb
Цель работы: Изучить основы создания программ на Си под Linux. Научиться обрабатывать параметры, полученные из командной строки, при помощи функции getopt(). Освоить простейшие приёмы работы с отладчиком gdb.
Программа выполнения работы.
Ознакомится с работой функциии getopt(). Разобрать пример, описанный в краткой теории.
Набрать, откомпилировать и запустить пример. Посмотреть, как он работает, используя отладчик gdb.
Составить программу обработки аргументов командной строки с помощью функции getopt согласно варианту задания.
Скомпилировать и продемонстрировать работу программы преподавателю.
Составить отчет.
Краткая теория.
Создание любой программы начинается с постановки задачи, проектирования и написания исходного кода. Обычно исходный код программы записывается в один или в несколько файлов, которые называются исходными файлами или исходниками. Исходные файлы создаются и набираются в любом текстовом редакторе. Но желательно, чтобы этот редактор был с «подсветкой» синтаксиса, т.е. выделял визуально ключевые слова используемого языка программирования. В результате исходный код становится более наглядным, а программист делает меньше ошибок. Для написания исходного кода в Linux вполне подойдут такие редакторы, как :
vi(Visual Interface)- полноэкранный редактор, разработанный Биллом Джоем. Практически все UNIX-подобные системы имеют такой редактор.
Emacs (Editor MACroS)- текстовый редактор, созданный Ричардом Столлманом.
Среди других редакторов следует отметить pico, jed и mcedit(Midnight Commander Editor). Они достаточно просты и удобны в использовании, хотя не обладают большими свойствами vi. Программы в Linux будем писать на языке программирования С.
Чтобы запустить уже написанную программу, ее надо скомпилировать(то есть перевести код на язык машины). Этим занимается программа компилятор. Компилятором языка С в Linux служит программа gcc (GNU C Compiler) из пакета компиляторов GCC (CNU COMPILER COLLECTION). Чтобы скомпилировать программу, необходимо вызвать gcc, указав в качестве аргумента имя исходного файла:
linux-> gcc lab1.c
Если компилятор не нашел ошибок, то в текущем каталоге появится файл а.out.Данный файл называется исполняемым. Чтобы его выполнить, достаточно ввести в командную оболочку путь к файлу :
limux->./a.out
Имя a.out не подходит для программы. Поэтому самое простое решение, это переименовать полученный файл.
linux->gcc lab1 lab1.c
Но есть лучше способ компиляции. Можно запустить компилятор с опцией –o, которая позволяет явно указать имя файла на выходе
linux->gcc –o lab1 lab1.c
Но компилятор не всегда может перевести исходный код в исполняемый. В достаточно объёмных программах исходный код разбивают на несколько частей, которые компилируются отдельно, а потом соединяются воедино. Каждый такой кусок называется объектным кодом или объектным модулем. Каждый такой модуль записывается в объектный файл, имеющий расширение “.o”. В результате компоновки может получиться исполняемый файл, а так же библиотеки. Для объединения объектных модулей служит компоновщик(Линковщик), а процесс объединения называют компоновкой, или линковкой. В Linux имеется компоновщик GNU ld, входящий в состав пакета GNU binutils. Ручная компановка может оказаться не эффективной в связи с тем, что компановщику передается очень много параметров. Но компилятор gcc может самостоятельно вызвать компоновщик, когда он потребуется.
Чтобы отказаться от автоматической компоновки, достаточно указать опцию –с
linux-> gcc –c lab1.c
В итоге, в текущем каталоге должен появится файл lab1.o . Далее можно надо сделать компоновку, это делается так:
linux -> gcc –o lab1 lab1.o