Qt for QNX 运行时目标要求
QNX 软件系统公司为制造嵌入式设备提供软件解决方案。其中包括以非常灵活的方式创建 QNX Neutrino 实时操作系统启动映像。尽管 QNX 为操作系统映像的创建提供了多个参考脚本,但您迟早会需要进行修改,或决定从头开始创建操作系统映像。Qt 依赖于多个第三方组件和选定的操作系统服务。因此,运行 Qt 的目标设备的 QNX Neutrino 实时操作系统 Boot 映像必须满足以下部分列出的要求,以确保 Qt 按预期运行。
QNX 屏幕图形子系统
在启动任何 Qt 应用程序之前,QNX 屏幕图形子系统(也称作 "屏幕")必须运行。Screen
由一个驱动程序和 Qt 使用的几个实用程序和服务组成。其中还包括鼠标和键盘事件的处理。通过验证图形应用程序(如gles2-gears
)能否顺利启动和运行,可以确保Screen
配置和运行正确。
SDP 中的大多数最新操作系统构建脚本示例都包含屏幕的所有组件和启动命令。你可以将它们作为参考。
IPv6 支持
Qt Network 的网络协议栈要求启用 IPv6 支持,与实际网络使用 IPv4 还是 IPv6 无关。
警告: io-pkt-v6-hc
必须运行,而不是 io-pkt-v4
。
随机设备/dev/random
Qt 要求/dev/random
存在并运行。在启动任何 Qt 应用程序之前或在系统启动过程中启动它:
random -p waitfor /dev/random
系统日志记录器
QNX 提供的slog2日志框架专门针对嵌入式系统的具体情况。它的主要优点是性能比文本输出到文件要好得多。在 QNX Neutrino 实时操作系统上,Qt XML 默认将该框架用于QDebug 的任何日志输出。slog2
服务应在系统启动时启动。slog2
还依赖于/tmp
文件夹的存在,例如,还必须对该文件夹进行配置:
[type=link] /tmp=/dev/shmem display_msg "Starting slogger2..." slogger2 -U1001:1000 & waitfor /dev/slog2
环境变量
启动 Qt 应用程序时需要设置一系列环境变量。实际上,其中大部分变量并非 QNX Neutrino 实时操作系统所特有。但由于了解这些变量可在出现问题时节省大量时间,因此仍在此提及。
注意: setconf
和getconf
是访问 POSIX 环境变量(尤其是主机名、时间和日期)所必需的。
Qt 运行时位置
如果在构建 Qt 时未设置 RPATH 环境变量,则可将 Qt 运行时组件放在文件系统中的任何文件夹中。假设 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_QPA_QNX_DISPLAY_CONFIG
。
屏幕物理尺寸
Qt 需要有关所附显示器物理尺寸的信息,以确定 DPI 值,从而设置正确的字体大小。通常,这些信息由屏幕提供。在某些情况下,您可能会看到无效的屏幕尺寸,如 0mmx0mm。在这种情况下,Qt 需要将环境变量QQNX_PHYSICAL_SCREEN_SIZE
设置为相应的值,以获得所需的信息。如果 Qt 应用程序在退出时出现无法确定物理屏幕尺寸的错误信息,请在启动 Qt 应用程序前这样设置该变量:
export QQNX_PHYSICAL_SCREEN_SIZE=150,100
以告知 Qt 在此特定情况下,屏幕的宽度为 150 毫米,高度为 100 毫米。屏幕的物理尺寸以毫米(mm)为单位,应与最终配置中显示屏的实际物理尺寸一致。
首次启动 Qt 应用程序时的故障排除
QNX Neutrino 实时操作系统所提供的灵活性的唯一缺点是,目标机上的运行环境可能与 Qt 所期望的略有不同。这是 Qt 程序在新目标机上无法启动的常见原因。一些通用的环境变量有助于找到问题的根源:
- 将
QT_DEBUG_PLUGINS
设置为1
有助于了解 QPA 插件无法加载的原因。 - 将
LD_DEBUG
设置为1
有助于了解共享库的加载位置和方式。当插件因无法加载其他共享库而无法加载时,可与QT_DEBUG_PLUGINS
结合使用。 - 设置
QT_LOGGING_TO_CONSOLE
会强制将所有日志信息发送到stderr
,而不是slog2
。这对分析应用程序启动问题非常有用,因为您不需要使用其他工具来查看信息。
Qt XML 通常使用fontconfig
来提供对 systemfonts 的访问。如果尚未创建字体缓存,则会在启动第一个 Qt 应用程序时创建。根据设置的不同,这可能需要很长的时间,并会大大延迟应用程序的启动。如果不需要,可以在配置时使用 -DFEATURE_fontconfig=OFF 禁用字体配置。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.