Qt для QNX
Поддерживаемые архитектуры и релизы QNX
С точки зрения платформы разработки приложений, Qt работает поверх QNX Neutrino RTOS. Системные интеграторы и разработчики приложений используют QNX SDP (платформа разработки программного обеспечения), которая включает компоненты QNX Neutrino RTOS для различных целевых платформ и полный набор инструментов разработки.
Qt 5 в настоящее время протестирован и поддерживается на QNX SDP 7.0, с поддержкой 32-битных и 64-битных целевых архитектур:
-
ARMle-v7иx86(32-битная) -
AArch64leиx86-64(64-битная)
Поддержка 64-битных архитектур была добавлена в QNX SDP 7.0.
Предыдущие релизы
Более старые версии QNX SDP и другие архитектуры также могут работать, но не подлежат регулярным сборкам и тестированию.
Для получения списка доступных плат, дисплеев и устройств ввода обратитесь в QNX Software Systems (info@qnx.com) или KDAB (qnx-info@kdab.com). Qt на QNX Neutrino OS также поддерживается Qt для разработки устройств, для получения дополнительной информации обратитесь в The Qt Company.
Поддерживаемые модули
Все модули Qt Essentials поддерживаются в Qt для QNX.
См. Qt Add-Ons для получения информации о том, какие модули Qt Add-Ons поддерживаются в Qt для QNX.
Если вы собираете Qt из архива распространения исходного кода, инструмент configure гарантирует, что сборка будет выполнена только для модулей, которые известны как поддерживаемые для указанной целевой платформы. Кроме того, вы можете явно исключить неподдерживаемые или ненужные модули из сборки с помощью параметра -skip <module> при выполнении инструмента configure.
Если вы собираете Qt непосредственно из репозитория Git, вы должны инициализировать репозиторий только с поддерживаемыми модулями или собирать и устанавливать модули по отдельности. Это помогает предотвратить неожиданные проблемы со сборкой.
Требования к сборке
Для сборки Qt 5 необходимы следующие пакеты, доступные на сайте QNX (требуется регистрация для доступа к загрузкам):
Компилятор и другие части инструментальной цепочки предоставляются в пакетах SDP. Вам не нужны дополнительные установки на вашем хост-компьютере. Однако рекомендуется убедиться, что вы можете собрать Qt для целевой платформы настольного компьютера на хосте. См. Сборка Qt из исходных кодов для получения дополнительной информации. Все поддерживаемые целевые платформы QNX Neutrino RTOS полностью интегрированы в файлы makespecs, предоставленные в исходных кодах Qt.
При конфигурации сборки Qt необходимо указать имя целевой платформы для кросс-компиляции:
| Архитектура | Настройка целевой кросс-компиляции |
|---|---|
ARMle-v7 (32-битная) |
./configure -xplatform qnx-armle-v7-qcc |
AArch64le (64-битная) |
./configure -xplatform qnx-aarch64le-qcc |
x86 (32-битная) |
./configure -xplatform qnx-x86-qcc |
x86-64 (64-битная) |
./configure -xplatform qnx-x86-64-qcc |
Инструмент configure выполняет различные тесты для определения возможностей SDP и его дополнений. Он устанавливает соответствующие флаги в соответствии с результатами тестов. При необходимости проверьте сводку конфигурации в консоли или в ./qtbase/config.summary, и установите другие флаги вручную, если необходимо.
Независимо от платформы, для которой вы производите сборку, рассмотрите использование параметра -prefix вместе с configure, например, -prefix<Qt-install-path>. Это задает целевую папку, в которой Qt будет установлен, и размещает все артефакты сборки вне дерева исходного кода.
См. Параметры конфигурации 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. Оно должно быть установлено на<Qt-install-path>/qml - Если Qt не использует fontconfig, вы должны либо указать путь к шрифтам с помощью
QT_QPA_FONTDIR, либо разместить шрифты в<Qt-install-path>/lib/fonts, что является стандартным расположением шрифтов.
Физические размеры экрана
Qt нуждается в информации о физических размерах подключенного дисплея для определения значений DPI и, следовательно, для установки правильных размеров шрифтов. Обычно эта информация предоставляется экраном. В некоторых случаях вы можете увидеть недопустимый размер экрана, например, 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:
libfontconfiglibfreetypelibiconvlibicui18nlibicudatalibicuuclibpng14libxml2libsqlite3libssllibcrypto
Примечание: Это неполный список общих библиотек, используемых 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 использует те же интерфейсы удалённой отладки, что и IDE QNX Momentics, предоставленная в SDP. Подробнее см. соответствующую документацию QNX.
Другие утилиты на целевом устройстве
QNX предоставляет пакеты поддержки платформ (BSP) для многих распространённых платформ и их отдельных вариантов. Однако, если вам нужен BSP для платы, которую QNX не предоставляет, вы можете изменить существующий или разработать свой собственный.
При разработке BSP для вашей платы вы должны включить следующие утилиты, чтобы Qt Creator мог развернуть, запустить, отладить и остановить приложения на устройствах QNX:
awkcatcutdfgrepkilllnmkdirnetstatprintprintfpsreadsedsleepslog2infotailtarzipunameunzip
Утилиты должны находиться в стандартном расположении, например, /bin или /usr/bin. Кроме того, можно использовать файл ~/.ssh/environment для установки переменных для удалённых команд, таких как PATH. Также необходимо установить enable PermitUserEnvironment в конфигурации SSH-демона.
При настройке нового целевого устройства в Qt Creator выполните тест, чтобы убедиться, что все необходимые компоненты доступны и работают.
Дополнительную информацию о модификации или разработке BSP для вашей платы см. в разделе «Настройка BSP» в документации разработчиков QNX.
Папка назначения развертывания
Qt Creator разворачивает приложение на целевое устройство перед его удалённым запуском. На большинстве встраиваемых устройств это просто копирование бинарных файлов приложения и связанных данных в папку на целевом устройстве. Однако нет стандарта, как эта папка называется и где она расположена. Многие конфигурации используют /tmp, что часто сопоставляется с диском RAM. Это может привести к некоторой путанице, так как развернутые приложения исчезают при следующем выключении устройства.
Ещё одной популярной целью является /opt. Эта папка расположена на многих системах в разделе только для чтения, что делает развертывание невозможным. Убедитесь, что вы используете папку назначения, которая соответствует вашим потребностям. Вы можете установить её в переменной install.path в файле .pro вашего проекта, см. Установка файлов в документации qmake для получения более подробной информации.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qnx.html