Qt for QNX 运行时目标要求

QNX 软件系统提供用于创建嵌入式设备的软件解决方案。这包括以非常灵活的方式创建 QNX Neutrino RTOS 引导映像。尽管 QNX 为 OS 映像创建提供了几个参考脚本,但迟早您需要做出更改,或者您可能会决定从头开始创建 OS 映像。Qt 依赖于存在几个第三方组件和选定的 OS 服务。因此,运行 Qt 的目标设备的 QNX Neutrino RTOS 引导映像必须满足以下章节列出的要求,以确保 Qt 能够按预期工作。

QNX 屏幕图形子系统

在启动任何 Qt 应用程序之前,必须运行 QNX 屏幕图形子系统(也简称为“Screen”)。Screen 包括一个驱动程序和几个由 Qt 使用的基本工具和服务,这还包括处理鼠标和键盘事件。您可以通过确保像 gles2-gears 这样的图形应用程序可以启动并且没有问题地运行来确保 Screen 已正确配置并运行。

SDP 中的最近一些示例 OS 构建脚本包括了包含所有组件和 Screen 启动命令的部分。您可以将它们用作参考。

IPv6 支持

Qt 的网络堆栈要求启用 IPv6 支持,这不受实际网络使用 IPv4 或 IPv6 的限制。

警告:io-pkt-v6-hc 必须运行, cannot io-pkt-v4.

随机设备 /dev/random

Qt 要求 /dev/random 存在并且可以使用。在启动任何 Qt 应用程序之前或系统启动时启动它。

random -p
waitfor /dev/random

系统记录器

QNX 提供了针对嵌入式系统特定情况的定制的 slog2 记录框架。它的主要优点是与文件中的文本输出相比具有更好的性能。Qt 使用默认方式在 QNX Neutrino RTOS 上通过 QDebug 进行任何日志记录输出。应当在系统启动时启动 slog2 服务。同时,slog2 还依赖于存在 /tmp 文件夹,这也需要进行配置,例如

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

环境变量

启动 Qt 应用程序时,您应该设置一组环境变量。其中大多数实际上并不特定于 QNX Neutrino RTOS。它们仍然在这里列出,因为了解它们在出现问题时可以节省大量时间。

注意:要访问 POSIX 环境变量(特别是主机名和日期和时间),需要使用 setconfgetconf

Qt 运行时位置

如果您没有使用带有 RPATH 环境变量的配置来构建 Qt,则可以将 Qt 运行时组件放置在文件系统中的任何文件夹中。以下环境变量应指向有效位置,假设 Qt 安装在 <Qt-install-path>

  • LD_LIBRARY_PATH 应包含 <Qt-install-path>/lib 中 Qt 库的路径。
  • 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_QPA_QNX_DISPLAY_CONFIG 获取可用屏幕/显示器的数量和顺序。

物理屏幕尺寸

Qt 需要知道附加显示器的物理尺寸以确定 DPI 值,从而设置正确的字体大小。通常,此类信息由屏幕提供。在某些情况下,您可能看到一个无效的屏幕尺寸,例如 0mmx0mm。在这种情况下,Qt 需要设置环境变量 QQNX_PHYSICAL_SCREEN_SIZE 为相应的值以获取所需信息。如果 Qt 应用程序在错误消息中指出无法确定物理屏幕尺寸,请在启动 Qt 应用程序之前按如下方式设置变量

export QQNX_PHYSICAL_SCREEN_SIZE=150,100

以告知 Qt,在此特定情况下屏幕宽度为 150mm,高度为 100mm。物理屏幕尺寸以毫米(mm)为单位,应与最终配置中显示的实际物理尺寸相对应。

Qt 应用程序首次启动疑难解答

QNX Neutrino RTOS 提供的灵活性的唯一缺点是在您的目标上运行环境与 Qt 期望的略有不同。这是 Qt 新目标上的 Qt 应用程序无法启动的常见原因。一些通用的环境变量可以帮助找到问题的根源

  • QT_DEBUG_PLUGINS 设置为 1 帮助了解为什么 QPA 插件无法加载。
  • LD_DEBUG 设置为 1 帮助了解共享库在哪里以及如何加载。当插件由于无法加载其他共享库而无法加载时,可以与 QT_DEBUG_PLUGINS 结合使用。
  • 设置 QT_LOGGING_TO_CONSOLE 将强制将所有日志消息发送到 stderr 而不是 slog2。这对于分析应用程序启动问题很有用,因为您无需使用其他工具即可查看消息。

© 2024 Qt 公司有限公司。在本处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会的 GNU 自由文档许可证版本 1.3 的条款授予的。Qt 和相应标志是芬兰及其它世界各地 Qt 公司的 商标。所有其他商标均为各自所有者的财产。