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.15/qnx.html