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

Практическое занятие №10

Основы программирования на языке С++

Цель – освоение средств разработки программы на языке С/С++ и изучение функций для работы со строками, управления динамической памятью и ввода/вывода со стандартных внешних устройств

1. Краткие сведения из теории

Для того чтобы получить программу hello для Intel-совместимых целевых систем, следует выполнить команду

qcc -Vgcc_ntox86 hello.с -о hello

Ключ -V с параметром gcc_ntox86 определяет режим компиляции программы для платформы на базе процессора Intel. (Получить полный список целевых платформ, для которых мож­но сгенерировать приложение, можно командой qcc -V).

Для указания имени исполняемого модуля используется опция "‑o <имя модуля>" в нашем случае -о hello.

В результате в текущем каталоге создается исполняемый модуль с именем hello (традиционно - без расширения).

1.1. Компоновка объектных модулей

Компоновка осуществляется из созданных объектных модулей и модулей, содержащихся в библиотеках (включая стандартную библиотеку по умолчанию и библиотеки, указанные пользователем к командной строке в качестве параметров), исполняемого модуля программы. Компоновка осуществляется также с использованием компилятора qcc.

В простых случаях все фазы автоматически выполняются вызовом команды:

# qcc -Vgcc_ntox86 –o example example.c

В результате в текущем каталоге создается исполняемый модуль с именем example (стандартно - без расширения). При просмотре каталогов в оболочке MC перед именем файла появится символ <*>, который указывает на то, что файл содержит исполняемый модуль.

Запуск исполняемого модуля на выполнение из текущего каталога осуществляется командой:

# ./<имя модуля> <аргументы функции main>

Например,

# ./example

Рассмотрим более сложные случаи компоновки.

Библиотеки бывают статические (их имена имеют расширение ".а") и разделяемые (имена этих библиотек имеют расширение ".so"). Указание в командной строке пользовательских библиотечных файлов осуществляется с помощью опции "‑l<имя файла>". Как и в случае с файлами заголовков, компилятор ищет библиотечные файлы в стандартных каталогах, в частности /lib и /usr/lib. Для задания дополнительных каталогов предназначена опция "‑L<имя каталога>".

Имена компонуемых объектных модулей вместе с опциями включаются в командную строку в качестве аргументов.

Следующая команда осуществляет компоновку исполняемого модуля example из двух объектных модулей example.o main.o и использует, кроме стандартных, дополнительную библиотеку mylib:

# qcc -Vgcc_ntox86 –o example example.o main.o -lmylib -L/usr/local

В отличие от препроцессора, компоновщик просматривает лишь стандартные каталоги. Поэтому, если библиотечный файл находится в текущем каталоге, об этом нужно явно сообщить с помощью опции "‑L.". Например, при выполнении следующей команды компоновщик будет искать библиотеку в текущем каталоге:

# qcc -Vgcc_ntox86 –o example example.o main.o -L. -lmylib

Ещё пример.

Создание выполняемой программы производится командой:

$ qcc lab1_1.c –l /lib/libm.a –o lab1_1

Ключ l /lib/libm.a указывает программе-компоновщику подключить библиотеку с математическими функциями; ключ –o <имя_файла> - указывает имя создаваемого выполняемого файла.

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