Qt for QNX 编译运行步骤以及一些报错问题解决

目录:

1、Qt for QNX 编译命令

2、qnx 提示 fontconfig 报错,qnx提示 libqqnx.so 文件无法加载、把 Qt 程序指定到QNX的特定 Screen 上显示

一、设置qnx环境变量

source  yourQnxPath/qnxsdp-env.sh

二、编译

./configure -opensource -confirm-license -release -xplatform qnx-aarch64le-qcc -no-rpath -reduce-exports -system-sqlite -continue  -no-openssl -nomake examples -nomake tests -force-debug-info -separate-debug-info -shared -prefix edit_build --recheck-all

三、打包Qt库到target,然后设置环境变量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/apps/Qt/Qt5.15.6/lib:/apps/Qt/lib
export QT_PLUGIN_PATH=/apps/Qt/Qt5.15.6/plugins
export QML2_IMPORT_PATH=/apps/Qt/Qt5.15.6/qml

四、错误解决

如果提示 QQNX_PHYSICAL_SCREEN_SIZE 没有设置,则需要设置如下环境变量:

export QQNX_PHYSICAL_SCREEN_SIZE=1920,720

如果运行报错,则开启调试信息提示:

export QT_DEBUG_PLUGINS=1

如果提示 Fontconfig error: Cannot load default config file 错误:

Step1:
# /mnt/etc/fontconfig/fonts.conf 是你的fontconfig的配置文件路径
export FONTCONFIG_FILE=/mnt/etc/fontconfig/fonts.conf

Step2:
编辑 fonts.conf 并把自己的font路径添加相对应的xml节点上

也可以这样(没有测试过):
export FONTCONFIG_PATH=/etc/fonts 

如何解决 qt.qpa.plugin: Could not load the Qt platform plugin "qnx" in "" even though it was found. 报错:

Step1:
首先确认Qt环境变量是否成功设置,并且路径正确

Step2:
环境变量确认没有问题后,开启调试信息,查看 libqqnx.so 这个库是否加载成功

Step3:
如果提示加载成功,运行程序还是出现无法找到这个库文件,请使用 ldd 命令确认 libqqnx.so 库的依赖是否完整,cmd:
ldd yourPath/libqqnx.so
一般情况下是由于 libfontconfig.so.23 和 libfreetype.so 缺失导致,拷贝这两个库在可执行程序相同路径即可

除了上述情况以外:还有可能是解压过去的文件所属的用户组不对,需要修改为root用户所有
cmd: chown -R -h root:root QtPath

如何指定Qt程序到QNX特定的Screen上:

Step1:
在运行程序的相对位置创建 graphics.conf 配置文件

Step2: 设置环境变量:
export QT_QPA_QNX_DISPLAY_CONFIG=./graphics.conf

Step3: 修改配置文件内容
{
  "displayOrder": [ 2, 1 ]
}

# Note: 配置文件格式必须是上述json格式,后面的数组表述候选屏幕ID
# 这个 ID 是 BSP 虚拟出来给应用层的,并不是真正意义上的screenID
# BSP 可以通过映射,将 2 3 4 screen 的内容,映射在同一个物理屏幕
# 上,也可以映射到不同的屏幕,取决于QNX的配置

编译 qtquickcontrols2 提示找不到 quick 模块:

1、首先确定使用的qmake是安装目录下的qmake,而不是qtbase源码目录下bin文件夹的qmake;

2、qnx编译后比较特殊,默认安装目录下的qmake可能无法正常工作,需要把qtbase源码目录下bin文件夹的qmake覆盖安装目录下的qmake;

3、安装目录下还需要修改 qt.conf 文件(是为了能后让qmake正确识别到路径),参考如下:

[EffectivePaths]
Prefix=..
[DevicePaths]
Prefix=..
[Paths]
Prefix=..
HostPrefix=..
Sysroot=
SysrootifyPrefix=false
TargetSpec=qnx-aarch64le-qcc
HostSpec=linux-g++

4、使用安装目录下的qmake去编译即可;

如何使用QNX SDP7.1 编译 Qt 6.5.1:

1. ubuntu 安装ninja工具:

sudo apt install ninja-build

2. 在 home 目录下创建 qnx.cmake 文件,用于指定生成 qnx 平台配置:

set(CMAKE_SYSTEM_NAME QNX)

set(arch gcc_ntoarmv7le)

set(CMAKE_C_COMPILER qcc)
set(CMAKE_C_COMPILER_TARGET ${arch})
set(CMAKE_CXX_COMPILER q++)
set(CMAKE_CXX_COMPILER_TARGET ${arch})

set(CMAKE_SYSROOT $ENV{QNX_TARGET})

# The arch variable can be set to either gcc_ntoarmv7le, gcc_ntoaarch64le or gcc_ntox86_64
# depending on your target architecture.

3. source  qnx 环境变量,使能qcc  q++ 编译工具;

4. qtbase 源码目录执行如下命令:

cmake -GNinja -DCMAKE_TOOLCHAIN_FILE=$HOME/qnx.cmake  \
-DQT_HOST_PATH=$HOME/qt_host \
-DCMAKE_INSTALL_PREFIX=$HOME/qnx_install \
$HOME/qt

# QT_HOST_PATH = $HOME/qt_host , QT_HOST_PATH 实际上指向的是 Qt-PC 版本的安装路径
# 如:/home/zhangh/Qt/6.2.4/gcc_64  和 Qt5 安装 qt5-default 一样,Qt6 手动指定

# CMAKE_INSTALL_PREFIX=$HOME/qnx_install 指定一个 Qt 的安装路径
# $HOME/qt 为源码路径,可以使用 . 来代替

ep:
cmake . -GNinja -DCMAKE_TOOLCHAIN_FILE=$HOME/qnx.cmake -DQT_HOST_PATH=/home/zhangh/Qt/6.5.1/gcc_64 -DCMAKE_INSTALL_PREFIX=edit_build

5. 编译安装:

cmake --build . --parallel

cmake --install .

6. 编译其它模块:

/home/zhangh/Desktop/Qt6.5.1/qtbase-everywhere-src-6.5.1/edit_build/bin/qt-cmake . -DCMAKE_INSTALL_PREFIX=/home/zhangh/Desktop/Qt6.5.1/qtbase-everywhere-src-6.5.1/edit_build

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于使用QNX操作系统的Qt项目,可以使用SCons作为构建工具。SCons是一种基于Python的构建工具,可以自动化构建和测试过程,提高项目开发效率。 以下是使用SCons编译Qt项目的基本步骤: 1. 安装SCons 在QNX操作系统上,可以使用pkgsrc安装SCons。在终端中输入以下命令: ``` pkgin update pkgin install scons ``` 2. 配置SCons 在Qt项目的根目录下创建一个SConstruct文件,并添加以下内容: ``` import os # Set up environment variables env = Environment() env.Append(CPPPATH=['/usr/include/qt']) # Set up Qt libraries and modules env.Append(LIBS=['QtCore', 'QtGui', 'QtNetwork', 'QtXml', 'QtSql', 'QtSvg']) env.Append(QTDIR='/usr/local/Trolltech/Qt-4.8.7') # Set up compiler and linker flags env.Append(CCFLAGS=['-Wall', '-Werror']) env.Append(LINKFLAGS=['-Wl,-rpath-link,/usr/local/Trolltech/Qt-4.8.7/lib']) # Compile and link the project env.Program(target='myproject', source=['main.cpp', 'myclass.cpp']) ``` 在上面的代码中,我们设置了环境变量,包括Qt的头文件路径、库文件路径和Qt安装路径。然后,我们添加了需要链接的Qt库,设置编译器和链接器的参数,最后编译并链接项目。 3. 运行SCons 在终端中进入项目根目录,运行以下命令: ``` scons ``` 这将会自动编译和链接项目,并生成可执行文件。 注意:在运行SCons之前,需要确保Qt已经正确安装并配置好。如果Qt库文件没有正确设置,可能会出现链接错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值