Spec-Zone.ru › Qt 5.6

Примечания по платформе и компилятору - QNX

Поддерживаемые архитектуры и релизы QNX

С точки зрения платформы разработки приложений, Qt работает поверх QNX Neutrino RTOS. Системные интеграторы и разработчики приложений используют QNX SDP (Software Development Platform), который включает компоненты QNX Neutrino RTOS для различных целей и полный набор инструментов разработки. QNX Software Systems также предоставляет дополнительные пакеты, которые обогащают стандартный набор функций QNX Neutrino RTOS. В настоящее время эти пакеты:

  • QNX SDK для приложений и медиа 1.0.
  • Платформа QNX CAR 2.1.

Qt 5 в настоящее время протестирован и поддерживается на QNX SDP 6.6 с QNX SDK для приложений и медиа, см. раздел Требования к сборке для получения более подробной информации. Поддерживаемые архитектуры — ARMle-v7 и x86. Более старые релизы QNX SDP и другие архитектуры также могут работать, но не подлежат регулярным сборкам и тестированию.

Для получения конкретного списка доступных плат, дисплеев и устройств ввода обратитесь в QNX Software Systems (info@qnx.com) или KDAB (qnx-info@kdab.com). Qt на QNX Neutrino OS также поддерживается Qt Enterprise Embedded, свяжитесь с The Qt Company для получения более подробной информации.

Поддерживаемые модули

Практически все необходимые модули Qt модули и некоторые дополнения поддерживаются в QNX Neutrino RTOS. Подробности см. на странице состояния на странице состояния в вики-проекте Qt.

Если вы собираете Qt из архива с исходным кодом, инструмент configure гарантирует, что сборка будет выполнена только для модулей, которые известны как собираемые для указанной цели. Кроме того, вы можете явно исключить неподдерживаемые или не нужные модули из сборки с помощью опции -skip <module> при запуске инструмента configure.

Если вы собираете Qt непосредственно из репозитория Git, вы должны инициализировать репозиторий только с поддерживаемыми модулями или собирать и устанавливать модули отдельно. Это помогает предотвратить неожиданные проблемы со сборкой.

Требования к сборке

Для сборки Qt 5 необходимы следующие пакеты, доступные на сайте QNX (доступ требует регистрации):

  • SDP 6.6 с QNX SDK для приложений и медиа 1.0. Это сочетание образует текущую эталонную платформу для Qt на QNX Neutrino RTOS и должно быть вашим первым выбором.
  • SDP 6.6. По сравнению с предыдущей конфигурацией, этот выбор не использует QNX SDK для приложений и медиа 1.0, который предоставляет fontconfig и поддержку мультимедиа наряду с другими функциями. В этом случае Qt будет использовать внутреннюю базу данных шрифтов вместо fontconfig, а мультимедиа будет не функциональна.

Компилятор и другие части инструментальной цепочки предоставляются в пакетах SDP. Вам не нужно никаких дополнительных установок на ваш ПК-хост. Тем не менее, рекомендуется убедиться, что вы можете собрать Qt на хосте для целевой платформы рабочего стола. Смотрите Сборка исходных кодов Qt для получения более подробной информации. Все поддерживаемые цели QNX Neutrino RTOS полностью интегрированы в makefiles, предоставленные в исходном коде Qt. Вам просто нужно указать имя цели для кросс-компиляции при конфигурировании сборки Qt:

Для ARM:

./configure -xplatform qnx-armle-v7-qcc

Для x86:

./configure -xplatform qnx-x86-qcc

Инструмент configure выполняет различные тесты для определения возможностей SDP и его дополнений. Он устанавливает соответствующие флаги в соответствии с результатами тестов. При необходимости проверьте сводку конфигурации в консоли или в ./qtbase/config.summary, и установите другие флаги вручную по мере необходимости. Смотрите Опции конфигурации Qt для получения более подробной информации.

Независимо от платформы, для которой вы собираете, рассмотрите возможность использования опции -prefix с configure также, например, -prefix <Qt-install-path>. Это указывает целевую папку, где будет установлен Qt, и размещает все артефакты сборки за пределами дерева исходного кода.

Требования к целевой среде Qt Runtime

QNX Software Systems предоставляет программные решения для создания встраиваемых устройств. Это включает создание образов загрузки QNX Neutrino RTOS очень гибким способом. Хотя QNX предоставляет несколько эталонных скриптов для создания образа ОС, рано или поздно вам придется внести изменения или вы можете решить создать образ ОС с нуля. Qt полагается на существование нескольких компонентов сторонних производителей и выбранных сервисов ОС. В связи с этим образы загрузки QNX Neutrino RTOS для целевого устройства, на котором работает Qt, должны удовлетворять нескольким требованиям для обеспечения корректной работы Qt. В следующих разделах перечислены важные компоненты для Qt.

Подсистема графики экрана QNX

Прежде чем любое приложение Qt сможет запуститься, должна быть запущена подсистема графики экрана QNX (также называемая просто "Экран"). Экран состоит не только из драйвера, но также включает несколько утилит и других сервисов, которые используются Qt. Это включает обработку событий мыши и клавиатуры. Вы можете убедиться, что Экран правильно настроен и запущен, проверив, что графическое приложение, например gles2-gears, может быть запущено и работает без проблем. Большинство последних скриптов сборки образов ОС в SDP включают разделы со всеми компонентами и командами запуска для Экрана. Используйте их в качестве ссылки.

Поддержка IPv6

Стек сетевых протоколов Qt требует поддержки IPv6, независимо от того, использует ли фактическая сеть IPv4 или IPv6. Это означает, что io-pkt-v6-hc должен быть запущен, а не io-pkt-v4.

Служба устройства случайных чисел /dev/random

Qt требует /dev/random для наличия и функциональности. Запустите её перед запуском любого приложения Qt или во время запуска системы:

random -p
waitfor /dev/random

Системный регистратор

QNX предоставляет slog2 фреймворк ведения журналов, настроенный под особенности встраиваемых систем. Главное преимущество заключается в гораздо лучшей производительности по сравнению с текстовым выводом в файлы. Qt по умолчанию использует этот фреймворк для любого вывода журналов, проходящего через QDebug в QNX Neutrino RTOS. Сервис slog2 должен быть запущен при запуске системы. Также slog2 полагается на существование папки /tmp, которая также должна быть настроена, например:

[type=link] /tmp=/dev/shmem
display_msg "Starting slogger2..."
slogger2 -U1001:1000 &
waitfor /dev/slog2

Переменные среды

Существует набор переменных среды, которые вы должны установить при запуске приложения Qt. Большинство из них не специфичны для QNX Neutrino RTOS. Они все равно упомянуты здесь, так как знание их просто экономит много времени в случае проблем.

Расположение среды Qt Runtime

Если вы не собирали Qt с включенным RPATH, вы можете поместить компоненты среды Qt Runtime в любую папку в файловой системе. Следующие переменные среды должны указывать на действительные расположения, предполагая, что установка Qt расположена в <Qt-install-path>:

  • LD_LIBRARY_PATH должна содержать путь к библиотекам Qt в <Qt-install-path>/lib
  • QT_PLUGIN_PATH определяет, где находятся плагины Qt. Она должна быть установлена на <Qt-install-path>/plugins
  • QML2_IMPORT_PATH определяет, где находятся плагины Qt Quick 2. Она должна быть установлена на <Qt-install-path>/qml
  • QML_IMPORT_PATH требуется только при использовании модуля совместимости Qt Quick 1. Она должна быть установлена на <Qt-install-path>/imports
  • Если Qt не использует fontconfig, вам необходимо указать путь к шрифтам, предоставленным в Qt, и установить QT_QPA_FONTDIR в <Qt-install-path>/lib/fonts

Физический размер экрана

Qt нуждается в информации о физических размерах подключенного дисплея для определения значений DPI и, таким образом, установки правильных размеров шрифтов. Обычно эта информация предоставляется подсистемой Screen. В некоторых случаях вы можете увидеть недопустимый размер экрана, например, 0ммx0мм. В таком случае Qt требует переменной среды QQNX_PHYSICAL_SCREEN_SIZE, установленной на соответствующие значения, чтобы получить необходимую информацию. Если приложения Qt завершаются с сообщением об ошибке, что физический размер экрана не может быть определен, установите переменную таким образом перед запуском приложения Qt:

export QQNX_PHYSICAL_SCREEN_SIZE=150,100

чтобы сообщить Qt, что в данном случае экран имеет ширину 150 мм и высоту 100 мм. Физический размер экрана измеряется в миллиметрах (мм) и должен соответствовать фактическому физическому размеру дисплея в окончательной конфигурации.

Устранение неполадок при первом запуске приложения Qt

Единственным недостатком большой гибкости, предоставляемой QNX Neutrino RTOS, является риск того, что что-то на вашем целевом устройстве все еще отличается от ожидаемого Qt. Это очень распространенная причина, по которой первое приложение Qt на новой цели не запускается. Несколько общих переменных среды могут помочь в поиске причины проблем:

  • Установка QT_DEBUG_PLUGINS на 1 помогает увидеть, почему плагин QPA не может загрузиться.
  • Установка LD_DEBUG на 1 помогает увидеть, где и как загружаются общие библиотеки. Это можно использовать в сочетании с QT_DEBUG_PLUGINS при невозможности загрузки плагина, потому что он не может загрузить какие-то другие общие библиотеки.
  • Установка QT_LOGGING_TO_CONSOLE принудительно направит все сообщения протоколирования в stderr вместо slog2. Это очень полезно для анализа проблем с запуском приложений, так как вам не нужно использовать другой инструмент для просмотра сообщений.

Библиотеки сторонних производителей

Убедитесь, что ваш системный образ содержит следующие дополнительные библиотеки сторонних производителей, которые не всегда включены в минимальные образы QNX Neutrino RTOS:

  • libfontconfig (предоставляется в дополнение к стандартной установке SDP 6.6)
  • libfreetype
  • libiconv
  • libicui18n
  • libicudata
  • libicuuc
  • libpng14
  • libxml2
  • libsqlite3
  • libssl
  • libcrypto

Обратите внимание, что вышеприведенный список не является полным списком общих библиотек, используемых Qt в QNX Neutrino OS. Довольно много общих библиотек уже доступны в типичных образах ОС или включены другими частями системы, например, подсистемой Screen.

Доступ к переменным среды

setconf и getconf необходимы для доступа к переменным среды POSIX, особенно для имени хоста, времени и даты.

Требования к целевому Qt Creator

Целевой QNX Neutrino RTOS, используемый для разработки с Qt Creator, должен предоставлять несколько дополнительных командных утилит и сервисов.

SSH

Развертывание и запуск удалённых приложений полагается на SSH. Демон SSH (sshd) должен быть установлен и запущен во время запуска системы. Обратите внимание, что он требует /dev/random, что уже было упомянуто. Он также ожидает, что права доступа к его конфигурационным файлам будут установлены правильно. Последнее делает невозможным запуск SSH с файловой системы, которая не поддерживает полные права доступа, например, FAT.

SCP и SFTP

Утилиты scp и sftp используются Qt Creator для развертывания и должны быть доступны на целевом устройстве. Кроме того, демон inetd должен быть запущен при запуске системы, который затем запускает соответствующие сервисы, включая FTP, если это необходимо.

Инструменты QNX для удалённой отладки

Для удалённой отладки на устройстве разработки должен быть запущен pdebug (отладчик уровня процессов). Он обычно запускается процессом qconn, который также предоставляет различную информацию о процессах для Qt Creator. Как правило, Qt Creator использует те же интерфейсы удалённой отладки, что и QNX Momentics IDE, предоставленный в SDP. Более подробная информация доступна в соответствующей документации.

Другие утилиты на целевом устройстве

Большинство скриптов сборки ОС включают набор стандартных командных утилит. Qt Creator ожидает ещё несколько утилит и они должны быть предоставлены на целевом устройстве:

  • printf
  • awk
  • ps
  • tar
  • zip
  • unzip
  • sed

Запустите тест при настройке нового целевого устройства в Qt Creator, чтобы убедиться, что все необходимые компоненты доступны и запущены.

Папка назначения развертывания

Qt Creator развертывает приложение на целевое устройство перед его удалённым запуском. На большинстве встраиваемых устройств это просто копирование бинарных файлов приложения и связанных данных в папку на целевом устройстве. Сложность заключается в том, что до сих пор нет стандарта, как называется и где расположена эта папка. Многие конфигурации используют /tmp, который часто отображается на диске оперативной памяти. Этот случай вызывает много путаницы, так как развернутые приложения исчезают при следующем выключении устройства. Ещё одним популярным целевым устройством является /opt. Эта папка расположена в разделе только для чтения на многих системах, что делает развертывание невозможным. Убедитесь, что вы используете папку назначения, которая соответствует вашим потребностям. Вы можете задать её в переменной install.path в файле .pro вашего проекта, см. Установку файлов в документации QMake для получения дополнительной информации.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/platform-notes-qnx.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API