Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания Редакция 1.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
100.42 Кб
Скачать

Лабораторная работа № 1 аргументы и опции программы. Функция getopt(). Знакомство с отладчиком gdb

Цель работы: Изучить основы создания программ на Си под Linux. Научиться обрабатывать параметры, полученные из командной строки, при помощи функции getopt(). Освоить простейшие приёмы работы с отладчиком gdb.

Программа выполнения работы.

  1. Ознакомится с работой функциии getopt(). Разобрать пример, описанный в краткой теории.

  2. Набрать, откомпилировать и запустить пример. Посмотреть, как он работает, используя отладчик gdb.

  3. Составить программу обработки аргументов командной строки с помощью функции getopt согласно варианту задания.

  4. Скомпилировать и продемонстрировать работу программы преподавателю.

  5. Составить отчет.

Краткая теория.

Создание любой программы начинается с постановки задачи, проектирования и написания исходного кода. Обычно исходный код программы записывается в один или в несколько файлов, которые называются исходными файлами или исходниками. Исходные файлы создаются и набираются в любом текстовом редакторе. Но желательно, чтобы этот редактор был с «подсветкой» синтаксиса, т.е. выделял визуально ключевые слова используемого языка программирования. В результате исходный код становится более наглядным, а программист делает меньше ошибок. Для написания исходного кода в 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