Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lr2.doc
Скачиваний:
5
Добавлен:
08.11.2019
Размер:
236 Кб
Скачать

3. Краткие теоретические сведения

3.1. Компиляция программ с помощью gcc

Программа на языке С — это один или несколько текстовых файлов, которые называются исходными. Чтобы запустить программу, ее исходные файлы необходимо скомпилировать, т.е. создать исполняемый файл, содержащий в себе инструкции процессора и пригодный для запуска на компьютере.

При выполнении лабораторных работ мы будем использовать компилятор GNU Compiler Collection (GCC).

GCC - основной компилятор проекта GNU. Он поддерживает набор всех наиболее используемых языков программирования и обеспечивает перенос программ на десятки аппаратных платформ. Все свободно распространяемое программное обеспечение, включая и компиляторы, на том или ином уровне основывается на GCC.

Для того чтобы GCC нормально работал, необходимо, чтобы исходные файлы, содержащие текст программы, имели имена, заканчивающиеся на .c.

В простейшем случае откомпилировать программу можно, запуская компилятор командой

gcc имя_исходного_файла

Если программа была написана без ошибок, то компилятор создаст исполняемый файл с именем a.out. Изменить имя создаваемого исполняемого файла можно, задав его с помощью опции -o:

gcc имя_исходного_файла -o имя_исполняемого_файла

Например, если программа состоит из одного исходного файла hello.c, то для его компиляции компилятором GNU С достаточно выполнить команду:

$ gcc hello.c -o hello

В результате получится файл hello, имя которого указано в опции -o. Этот файл является исполняемым и его можно запускать при помощи команды:

$ ./hello

Пара символов ./ перед hello означает «искать исполняемый файл hello в текущей директории».

Компилятор gcc имеет несколько сотен возможных опций. Подробную информацию об опциях компилятора gcc можно получить, если набрать

$ man gcc

или

$ info gcc

Чтобы создать исполняемый под Linux файл программы, Вам предварительно необходимо скопировать файл с текстом программы в папку /home/user. Вы имеете право запускать на исполнение файлы, расположенные в этой папке. Для передачи данных между основным компьютером и виртуальной машиной воспользуйтесь общей папкой share*.

Для редактирования текста программы можно воспользоваться, например, текстовым редактором gedit или встроенным редактором файлового менеджера Midnight Commander (mc).

Чтобы открыть текст с помощью gedit можно, например, набрать в командной строке

gedit имя_файла

Можно открыть в «Обозревателе файлов» Nautilus рабочую папку (например, дважды щелкнув по иконке «Домашняя папка пользователя user») и двойным щелчком открыть файл с текстом программы. Если файл имеет расширение .с, в gedit будет автоматически включена подсветка синтаксиса. В противном случае нужно выбрать пункт меню «Вид»-> «Режим подсветки синтаксиса»-> «Исходные тексты»-> «С».

Чтобы запустить файловый менеджер Midnight Commander наберите в командной строке

mc

Далее выберите текстовый файл для редактирования и нажмите F4.

3.2. Анализ параметров вызывающей командной строки

Если исполняемый файл, полученный в результате компиляции и компоновки программы, написанной на языке С, вызывается на выполнение вводом с терминала его имени, то параметры этой командной строки могут быть переданы указанной программе в качестве аргументов функции main():

int main(int argc, char *argv[]) {…}

При этом значение переменной argc равно числу параметров введенной командной строки, а аргумент argv представляет собой массив указателей на строки, являющиеся параметрами введенной командной строки []. Первая строка – argv[0] – это имя программы. Строка argv[i], i=1,…, argc-1 представляет собой i-й аргумент программы.

Следующая небольшая программа выводит параметры командной строки, с помощью которой она была вызвана на выполнение. Фактически, эта программа представляет собой простейшую версию команды ОС Linux echo.

#include <stdio.h>

int main(int argc, char *argv[])

{

int i;

for (i=1; i<argc; i++)

printf("%s%c", argv[i], (i<argc-1)?’ ’:’\n’);

return 0;

}

В соответствии с принятыми в ОС Linux соглашениями параметры командной строки, начинающиеся с символа “-“ , являются флагами вызываемой на выполнение команды. Если следовать этим правилам при разработке программ, то, очевидно, разрабатываемые программы должны осуществлять разбор командной строки с целью распознавания флагов и аргументов команды.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]