- •Лабораторная работа № 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
