Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект Лекций ПСРВ.doc
Скачиваний:
154
Добавлен:
12.02.2016
Размер:
2.73 Mб
Скачать

4.2. Создание приложения

Базовым языком программирования в QNX является язык С. В качестве стандартного компилятора в QNX входит компилятор – qcc.

Процедура создания программ на языке приведена на рис.11.

Написание программ осуществляется с использованием любого текстового редактора, входящего в состав системных средств QNX. Создать текстовый файл можно, например, с использование стандартного текстового редактора Editor или с помощью встроенного редактора оболочки Midnight Commander.

При указании имени файла исходного модуля программы предлагается использовать стандартное расширение ".c".

Итак, для получения приложения исходный текст обрабатывает­ся таким конвейером: препроцессор — компилятор — компо­новщик. Эту цепочку удобнее всего вызывать командой qcc. Удобство создается тем, что у этой команды есть конфигураци­онные файлы, позволяющие ей задавать по умолчанию опти­мальную комбинацию опций для всех перечисленных инстру­ментов (см. каталог /etc/qcc). Давайте создадим текстовой файл I с именем hello.с и наполним его банальным текстом на языке С: main () {

printf("Hello world!\n"); }

Обратите внимание, что я не потрудился написать директиву препроцессора «include <stdio.h> — qcc сама знает, что без stdio.h не обойтись.

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

qcc -Vgcc_ntox86 hello.с -о hello

Ключ -V с параметром gcc_ntox86 определяет режим компиляции программы для платформы на базе процессора Intel.

Получить полный список целевых платформ, для которых мож­но сгенерировать приложение, можно командой

qcc -V

Например, gcc_ntoppcbe — для целевых систем PowerPC BigEndian, a gcc_ntomipsie — для MIPS LittleEndian.

С QNX Neutrino 6.3 поставляются два GCC-компилятора: версия 2.95.2 (используется по умолчанию) и 3.3.1. Откомпилируем ту же программу компилятором посвежее:

qcc -V3.3.I,gcc_ntox86 hello.с -о hello_new

Может это и случайность, но размер heiio_new у меня получил­ся меньше, чем hello.

При завершении отладки программы для получения её коммерческого варианта может оказаться полезным использование при компиляции средств оптимизации кода исполняемого модуля. Есть несколько уровней оптимизации, для большинства случаев подходит второй. Для включения средств оптимизации используется опция "‑О<уровень оптимизации>". Следующая команда компилирует файл с включенным режимом оптимизации второго уровня:

# qcc -Vgcc_ntox86 –c -O2 example.c

Заметим, что включение средств оптимизации иногда приводит к проявлению скрытых ошибок, незаметных ранее.

4.3. Средства отладки программ

В качестве средства отладки программ QNX включает в себя отладчик gdb. Это программа, под управлением которой можно запустить исполняемый модуль программы. Чтобы можно было воспользоваться отладчиком, необходимо скомпилировать программу с включением в неё отладочной информации. Этой цели служит опция "-g" компилятора. В результате компилятор включает дополнительную информацию в объектные и исполняемые модули, позволяющую связать исходный текст программы с исполняемым модулем.

Чтобы воспользоваться отладчиком gdb, его необходимо запустить, указав в качестве аргумента имя исполняемого модуля:

# gdb <имя модуля>

После запуска появляется строка приглашения для ввода команд отладчика:

(gdb)

Перечислим наиболее ходовые команды отладчика:

  • run - запустить исполняемый модуль.

  • where - показать содержимое стека.

  • up -движение вверх по стеку.

  • print - показать значение переменной.

  • break - установить контрольную точку (точка остановки).

  • next - перейти после остановки на следующую строку.

  • step - войти внутрь функции.

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

(gdb)run

Подробную информацию о командах отладчика можно получить с помощью команды help. Например:

(gdb) help run