Последовательность команд для создания программы.

1. Программа состоит из одного исходного файла

1) В текстовом редакторе (pico, vi, gedit, emacs и т.п.) создать и сохранить исходный текстовый файл (например, myprog.c) $pico ……………… работа с pico
2) Откомпилировать и скомпоновать программу. Результат - исполняемый файл (например, myprog) $gcc -o myprog myprog.c
3) Выполнить программу $myprog или $myprog param1 param2

 

2. Программа состоит из нескольких исходных файлов (module1.c, module2.c, module3.c)

1) В текстовом редакторе создать и сохранить каждый из исходных файлов $pico ……………… работа с pico
2) Откомпилировать отдельно каждый текстовый файл. Результат - объектные файлы (module1.o, module2.o, module3.o) $gcc -c module1.c $gcc -c module2.c $gcc -c module3.c
3) Скомпоновать объектные файлы. Результат - исполнимый файл. $gcc -o myprog module1.o module2.o module3.o
4) Выполнить программу $myprog или $myprog param1 param2

 

Задание 2. Создайте в вашем каталоге каталог lab2 и сделайте его текущим для этой лабораторной работы.

2.1. Напишите на языке С/С++ и выполните программу Hello, которая выводит строку "Hello, world".

2.2. Напишите на языке С/С++ и выполните программу obr, состоящую из двух модулей:

1) модуль obr.c содержит функцию double obr (int i), которая возвращает число, обратное числу i;

2) модуль main.c содержит функцию main(), которая запрашивает у пользователя целое число i и выводит значение obr(i).

 

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

Компилятор по умолчанию ищет включаемые (заголовочные) файлы в текущем каталоге и в каталогах, в которых установлены заголовочные файлы для стандартных библиотек. Если заголовочный файл находится в каком-либо другом каталоге, то следует использовать команду для вызова компилятора gcc/g++ с опцией -I. Пусть, например, нужно включить в программу файл obr.h из каталога /home/ivanov/incl и пусть каталог /home/ivanov/texts является текущим. Тогда следует дать команду

$gcc -c -I ../incl obr.c

Или можно указать абсолютное имя для каталога incl:

$gcc -c -I /home/ivanov/incl obr.c

При этом в программе директива include должна иметь вид #include "obr.h"

4. В программу нужно включить нестандартную библиотеку объектных модулей.

Стандартная библиотека С (содержащая, в частности, функцию printf и др.) компонуется в исполняемый файл автоматически. Для включения нестандартной библиотеки (например, библиотеки libpthreads.a, которая содержит функции стандарта POSIX для работы с потоками) следует скомпоновать программу с опцией -l, например:

$gcc -o obr main.o obr.o -lpthreads

По этой команде в программу будет включена библиотека libpthreads.a, при этом автоматически к имени библиотеки добавится префикс lib и суффикс a. Компоновщик будет искать библиотеки в ряде стандартных каталогов, включая каталоги /lib и usr/lib. Если же библиотека, которую необходимо включить, находится в каком-либо ином каталоге, то в командной строке следует использовать опцию -L совместно с опцией l, например:

$gcc -o obr main.o obr.o -L/usr/local/libs -lpthreads

По этой команде библиотека libpthreads.a будет включена из каталога /usr/local/libs. Если данный каталог является текущим, то команду можно задать в следующей форме:

$gcc -o obr main.o obr.o -L. -lpthreads