
- •Министерство образования и науки Украины
- •Практическое занятие №1
- •1.1. Сокращенная запись двоичных чисел в восьмеричной и шестнадцатеричной системах счисления
- •1.2. Преобразование восьмеричных и шестнадцатеричных чисел в двоичные
- •1.3. Преобразование двоичных, восьмеричных и шестнадцатеричных чисел в десятичные
- •1.4. Преобразование десятичных чисел в двоичные, восьмеричные и шестнадцатеричные
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №2
- •1.1. Вход в систему
- •1.2. Редактирование командной строки
- •1.3. Память командных строк
- •1.4. Переключение виртуальных консолей
- •1.5. Изменение консольных шрифтов
- •1.6. Основные команды
- •Выполнение некоторых команд
- •2. Команда просмотра содержимого каталогов -ls (LiSt) – выдает на экран перечень файлов и каталогов (по умолчанию из текущего каталога).
- •Жесткая ссылка обозначает ся так же, как файл, на который она ссылается, счетчик ссылок при этом будет иметь значение больше 1.
- •3. Команда создание новых каталогов - mkdir.
- •5. Команда копирование файлов -cp (CoPy).
- •6. Команда перемещение файлов - mv (MoVe).
- •7. Команда удаление файлов - rm (ReMove).
- •8. Команды просмотра содержимого файлов more и cat.
- •Подстановочные символы
- •1.7. Выход из системы
- •2. Упражнения
- •Используя справочную информацию из п.1.6 Основные команды, изучите работу рассмотренных команд с различными параметрами и опциями:
- •1.2. Перенаправление ввода и вывода
- •1.3. Перенаправление с добавлением
- •1.4. Использование конвейера
- •2. Упражнения
- •3. Содержание отчёта
- •Справочная информация
- •Практическое занятие №4 Псевдонимы команд в ос qnx Цель – создание псевдонимов команд для облегчения работы в среде ос qnx
- •1. Краткие теоретические сведения
- •1.1. Управление связями файлов
- •1.2. Жесткие связи
- •1.3. Символические связи
- •1.4. Права доступа к файлам
- •1.5. Зависимости
- •1.6. Изменение прав доступа
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Сравнение файлов (команда diff)
- •1.3. Подсчет числа слов, строк и байт в файле (команда wc)
- •1.4. Потоковый редактор sed
- •2. Упражнения
- •/Usr/bin/grep
- •/Usr/xpg4/bin/grep
- •/Usr/xpg4/bin/grep
- •Операнды
- •/Usr/bin/grep
- •/Usr/xpg4/bin/grep
- •Использование
- •Работа с большими файлами
- •/Usr/bin/who
- •/Usr/xpg4/bin/who
- •Операнды
- •1.1. Ввод текста
- •1.2. Редактирование текста
- •1.3. Сохранение файлов и выход из VI
- •1.4. Редактирование еще одного файла
- •1.5. Включение других файлов
- •1.6. Выполнение команд Shell
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №7 Работа с текстовыми файлами Цель – знакомство с командами, работающими с текстовыми файлами (awk-интерпретатор скриптовый)
- •1. Краткие теоретические сведения
- •1.1. Язык awk
- •1.2. Регулярные выражения
- •Метасимволы, используемые в регулярных выражениях
- •1.3. Действия
- •1.4. Awk-переменные и выражения
- •1.5. Использование операций
- •1.6. Использование массивов
- •1.7. Селекторы
- •1.8. Использование операторов
- •1.9. Ввод и вывод данных
- •1.10. Встроенные функции
- •2. Упражнения
- •Структура файла query1
- •Структура файла query2
- •3. Содержание отчёта
- •1.2. Граматика языка shell
- •2. Упражнения
- •3. Содержание отчёта
- •Выполнить:
- •2. Упражнения
- •Примечание:
- •3. Содержание отчёта
- •1.1. Компоновка объектных модулей
- •1.2. Отладка
- •2. Упражнения
- •Задание №1
- •Задание №2
- •Задание №3
- •Задание №4
- •Задание №5
- •Задание №6
- •Задание №13
- •Задание №14
- •Задание №15
- •Задание №16
- •Задание №17
- •Практическое занятие №11
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Создание каталога
- •1.3. Биты режима для прав доступа
- •1.4. Удаление каталога
- •1.5. Создание жесткой связи
- •1.6. Создание символической связи
- •1.7. Чтение символической связи
- •1.8. Переименование файла
- •1.9. Удаление файла
- •1.10. Обработка ошибок
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Проверка возможностей управления работой и процессами в shell
- •2. Упражнения
- •3. Содержание отчёта
- •1.3. Ошибки, связанные с именами файлов
- •1.4. Доступ к файлу
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №15 Организация процессов вQnx
- •1. Методические указания по выполнению практической работы
- •1.1. Файл main.O
- •1.2. Файл input.C
- •1.3. Файл output.C
- •1.4. Файл process.C
- •1.5. Используемые функции
- •1.6. Получение информации о процессах
- •2. Упражнения
- •1.2. Клиент
- •1.3. Определение идентификаторов узла, процесса и канала (nd/pid/chid) нужного сервера
- •1.4. Применение обмена сообщениями
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №17 Организация потоков в qnx
- •1. Краткие теоретические сведения
- •1.1. Запуск потока
- •1.2. Администрирование атрибутов потока
- •Текст программы
- •Результаты
- •1.2. Текст программы
- •1.3. Последовательность действий
- •1.4. Результаты
- •2. Упражнения
- •3. Содержание отчёта
Практическое занятие №11
Технология создания программных проектов в ОС QNX
Цель – освоить технологию создания программных проектов на языке С/С++
1. Краткие сведения из теории
Для того чтобы создать собственную программу необходимо:
в текстовом редакторе написать исходный текст программы и оформить ее в виде файла с расширением *.с:
обработать полученный текст утилитой qcc. Утилита qcc конвейерно выполняет функции препроцессора (cpp), компилятора (cc) и компоновщика.
Управление программными проектами с помощью утилиты make
Утилита make автоматизирует процедуру сборки проекта. При запуске утилита make ищет в текущем директории файл сборки проекта с именем makefile (и если его не находит то ищет Makefile) и выполняет его командные строки. В принципе можно задать любое имя для файла сборки, указав его утилите make c помощью ключа –f .
Формат файла makefile
ЦЕЛЬ: ЗАВИСИМОСТЬ-1 ЗАВИСИМОСТЬ-2 ЗАВИСИМОСТЬь-3 .... ЗАВИСИМОСТЬ-N
КОМАНДА-1
КОМАНДА-2
...
КОМАНДА-М
ЦЕЛЬ: ЗАВИСИМОСТЬ-1 ЗАВИСИМОСТЬ-2 ЗАВИСИМОСТЬь-3 .... ЗАВИСИМОСТЬ-N
КОМАНДА-1
КОМАНДА-2
...
КОМАНДА-К
и.т.д.
Где ЦЕЛЬ – символическое обозначение одного из результатов действия команды make. ЦЕЛЬ отделяется от зависимостей двоеточием. Цель может состоять из нескольких имен, разделенных пробелами. В качестве цели часто удобно использовать имена выходных файлов компилятора, в этом случае утилита make может самостоятельно достроить недостающие зависимости.
ЗАВИСИМОСТи это список файлов, из которых строится цель. (Зависимости могут отсутствовать)
КОМАНДА - определяет действие, которое нужно выполнить для построения цели. В одной строке одна команда. Каждая команда обязательно начинается с символа табуляции.
Если утилита make запускается без указания цели, то она строит первую цель, заданную в makefile. Построение цели заключается в выполнении команд заданных для цели. Если какая либо из зависимостей сама является целью («подцелью»), то сначала собирается подцель. Перед тем как строить цель make сравнивает время последней модификации цели и зависимостей. Если какая-либо из зависимостей была изменена после последней сборки, то цель пересобирается.
Утилита make предназначена для автоматизации процесса управления выполнением команд при компиляции и компоновке исполняемого модуля для обеспечения целостности проекта, когда количество входящих в проект модулей достаточно велико. Дело в том, что при внесении изменений в некоторые модули программы необходимо следить, чтобы согласовано были переделаны и другие модули, зависящие от этих изменений. Например, если изменился некоторый исходный модуль, то необходимо переделать и соответствующий объектный модуль, а также исполняемый модуль.
В процессе выполнения утилита make использует указания из специального текстового файла с именем Makefile. Файл Makefile как раз и содержит описание подобных зависимостей, определяющих порядок выполнения действий, необходимых для поддержания целостности проекта программы. Существуют определенные правила построения файла Makefile. Суть этих правил заключается в том, чтобы с помощью механизма меток задать зависимости, определяющие порядок выполнения заданных действий. В качестве меток в файле используются имена модулей, составляющих проект программы, и с ними связываются действия, которые необходимо выполнять для поддержания целостности проекта.
Метки, заданные в файле Makefile, используются в качестве аргументов при запуске утилиты make на выполнение:
# make <МЕТКА>
Первым начинается выполняться действие, соответствующее указанной метке. Последующие действия определяются установленными в файле Makefile между метками зависимостями. Если аргумент не задан, то выполнение make начинается с первой по порядку метки.
Порядок формирования содержимого файла Makefile, обеспечивающего компиляцию и компоновку исполняемого модуля из нескольких исходных модулей поясним на примере. Пусть проект программы включает в себя следующие файлы:
Std.h
Main.c
Func1.c
Main.o
Func1.o
Prog
Необходимо при работе над проектом обеспечить его целостность. Для этого воспользуемся утилитой make, для которой сформируем файл Makefile. Его содержимое будет таким:
CFLAGS = -Vgcc_ntox86
Prog: Main.o Func1.o
qcc $(CFLAGS) -o Prog Main.o Func1.o
Main.o: Main.c Std.h
qcc $(CFLAGS) -c Main.c
Func1.o: Func1.c Std.h
qcc $(CFLAGS) -c Func1.c
clean:
rm -f *.o Prog
Файл Makefile включает в себя совокупность блоков с метками. Имена модулей, играющие одновременно роль меток, перечислены слева и заканчиваются двоеточием. Далее в строке перечислены имена модулей, от которых зависит целостность данного модуля и при изменении которых должна быть выполнена команда, заданная в следующей строке.
Кроме того, в него включен блок с меткой clean. Он не связан ни с какими модулями программы, и предназначен для выполнения команды удаления ненужных модулей:
# make clean
Запись $(CFLAGS) обозначает параметр настройки файла Makefile. Его можно определить либо непосредственно в файле Makefile (как в примере), либо в командной строке вызова утилиты make:
# make CFLAGS=-Vgcc_ntox86
Рассмотрим еще один пример файла Makefile. Пусть необходимо откомпилировать два исходных модуля на языке С, которые имеют имена manager.c и generator.c. Первые четыре строки файла подготавливают вызов компилятора qcc с режимом компиляции для платформы x86. Последующие строки начинаются соответственно с меток all, manager, generator и clean. Эти метки при запуске передаются в утилиту make в качестве параметров, управляющих её работой.
CC = qcc
LD = qcc
CFLAGS = -Vgcc_ntox86
LDFLAGS = -Vgcc_ntox86
all: clean manager generator
manager: manager.o
$(LD) $(LDFLAGS) manager.o -o manager
generator: generator.o
$(LD) $(LDFLAGS) generator.o -o generator
clean:
rm -f *.err *.o manager generator *.log
Если теперь утилиту make вызвать с параметром manager:
# make manager
то будет выполнена последовательность действий, необходимая для компиляции модуля manager.c в исполняемый файл manager с созданием объектного файла manager.o. При запуске утилиты в форме
# make all
будут последовательно выполнены предписания под метками clean, manager и generator. При запуске make без параметров будут выполнены предписания для первой метки (в нашем случае all). Вызов make с параметром clean позволяет удалить из текущего каталога все файлы с расширениями *.err, *.o, *.log, а также исполняемые файлы manager и generator.