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 для создания устройств, свяжитесь с компанией Qt для получения более подробной информации.
Поддерживаемые модули
Все модули 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 полностью интегрированы в make-файлы, предоставленные в исходном коде 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ммх0мм. В таком случае 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 использует те же интерфейсы удаленной отладки, что и QNX Momentics IDE, предоставленный в 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, который часто отображается на дисковом томе оперативной памяти. Это может вызвать некоторое замешательство, так как развернутые приложения исчезают при следующем выключении устройства.
Ещё одна популярная цель — /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.14/qnx.html