Spec-Zone.ru › Qt 5.9

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

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

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

  • QNX SDK для приложений и медиа 1.0.
  • QNX CAR Platform 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 Project wiki.

Если вы собираете 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 и, следовательно, установки правильных размеров шрифтов. Обычно эта информация предоставляется Подсистемой графики экрана. В некоторых случаях вы можете увидеть некорректный размер экрана, например, 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. Довольно много общих библиотек уже доступны в типичных образах ОС или включаются другими частями системы, например, Подсистемой графики экрана.

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

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/qt-5.9/platform-notes-qnx.html

Spec-Zone.ru

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