ubuntu下qnx7.0交叉编译qt5.9.7源码

本文详细记录了作者在QNX 7.0环境中,如何成功编译Qt 5.9.7源码以适应aarch64架构,涉及环境设置、错误排查和关键配置步骤,对遇到的问题如编译器设置、缺失头文件等提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在优快云上查阅了大部分qnx7.0平台编译qt源码的博客,都没有详细给出具体过程和报错处理方式,导致博主在编译时遇到诸多问题,耗时两周才成功编译qnx下aarch64架构版本的qt库,尝试过诸多版本的qt编译之后,发现都会编译过程中报错,譬如qt15.6和qt15.2.3,最终在qt5.9.7上成功编译,下面将仔细讲解编译过程。

环境为ubuntu 16.04 + qnx7.0交叉编译环境

第一步 准备qnx7.0交叉编译环境

将qnx编译环境拷贝到linux下,保证能够通过qnx脚本设置环境变量,如下图。

第二步 下载qt源码

目前下载编译版本为5.9.7,尝试过其他版本但是会编译失败。

下载地址为Index of /archive/qt/5.9/5.9.7/single

 

下载完成之后,将源码包拷贝到linux环境下,解压 

 

解压完成之后进入目录,新建文件夹build

进入 build目录,准备编译

第三步 开始配置编译环境 

编译出的目标架构为qnx7.0平台 aarch64架构,所以配置的时候需要选择aarch64,配置命令如下:

../configure -prefix /home/heyi/workplace/qt_qnx/install   -xplatform qnx-aarch64le-qcc -nomake examples -nomake tests -no-compile-examples   -release -confirm-license  -opensource

配置解释:

-prefix /home/heyi/workplace/qt_qnx/install   表示要安装的目录,可以自定义

-xplatform qnx-aarch64le-qcc                编译平台,选择qnx64位

Nomake表示不编译指定模块,此处不编译qt自带的测试模块和例子,减少编译时间。

在执行配置命令之前需要先切换到root账户,执行命令

sudo -i

然后再次进入build目录,设置qnx环境变量,执行qnx交叉编译器的脚本。

source /opt/qnx700/qnxsdp-env.sh

然后执行configure

../configure -prefix /home/heyi/workplace/qt_qnx/install   -xplatform qnx-aarch64le-qcc -nomake examples -nomake tests -no-compile-examples   -release -confirm-license  -opensource

会报如下错误:

提示未设置编译器,所以需要更改对应平台配置文件。

/home/heyi/workplace/qt_qnx/5.9.7/qt-everywhere-opensource-src-5.9.7/qtbase/mkspecs/common

在common目录下找到qcc-base-qnx-aarch64le.conf,然后编辑

如图所示,对应的CC编译器和C++编译器都没有指定,所以需要指定为配置好的qnx交叉编译器,配置好后如下图:

保存之后,然后再次执行配置指令(先删除build目录下之前配置失败产生的文件)

出现下图报错

 

提示找不到-lang-c++,这是一个格式相关的配置,打开对应配置文件删除-lang-c++

打开文件

然后和上一步一样,重新执行配置指令

提示找不到默认编译器,所以还需要设置默认编译器

QMAKE_COMPILER = /opt/qnx700/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.0.0-gcc

 再次执行配置指令

配置成功

直接执行 make -j8    8:代表同时开启8多个线程编译,可根据自身电脑配置自定义

编译提示未识别改指令,应该就是删除-lang-c++造成的不识别宽字符问题。

打开文件删除-Wc即刻,如下图

删除之后,重新配置指令

重新编译

编译过程中可能会报错提示找不到sys/Keycodes.h,此原因是qnx7.0编译环境不全,导致有一些头文件找不到,所以需要在其他qnx7.0环境下找到此头文件并拷贝到真正编译的qnx环境下,由于我有两个qnx编译环境,所以找到了此头文件。

/home/heyi/workplace/sdp_qnx700/target/qnx7/usr/include/sys/Keycodes.h复制到/home/heyi/workplace/qnx700/target/qnx7/usr/include/sys,将下图所有的key相关的头文件全部拷贝过去。

然后再次执行编译,未提示报错,编译完成

执行make install

 

执行完毕,再查看一下编译出来的库是否是对应平台。 

架构正确,编译全部完成。 

<think>嗯,用户想在Ubuntu上部署QNX,我需要先了解QNX是什么。QNX是一个实时操作系统,常用于嵌入式系统。用户可能是在开发嵌入式设备,需要搭建开发环境。 首先,QNX通常需要许可证,所以用户可能需要先获取QNX的安装包。然后,检查Ubuntu的兼容性,可能需要安装一些依赖库,比如32位库,因为QNX工具链可能基于32位架构。可以使用sudo apt-get install安装这些库。 接下来,安装QNX Momentics IDE,可能需要解压安装包并运行安装脚本。配置环境变量,比如QNX_TARGET和QNX_HOST,这些通常在.bashrc文件中设置。然后需要验证安装,运行qnxconfig命令检查配置是否正确。 可能的问题包括许可证管理、版本兼容性和网络配置。用户可能需要配置网络访问,特别是如果目标设备是远程的。此外,交叉编译工具链的配置也很重要,用户需要确保工具链路径正确。 用户可能还需要了解如何构建和部署QNX镜像,这部分可能需要参考QNX的官方文档。最后,建议用户查阅QNX的社区论坛或联系技术支持,以解决特定问题。</think>### 在Ubuntu上部署QNX的步骤指南 QNX是实时操作系统(RTOS),其开发环境通常依赖特定工具链。由于QNX属于商业软件,部署需遵循官方授权流程。以下是基于开源工具和通用方法的部署框架: 1. **获取QNX SDK** - 访问[QNX官网](https://blackberry.qnx.com)申请评估版或购买许可证 - 下载`QNX Software Development Platform (SDP)`安装包,例如`qnx710-env-ubuntu.tar` 2. **安装基础依赖** 在终端执行: ```bash $ sudo apt-get update && sudo apt-get install lib32z1 libncurses5:i386 ``` 这些32位兼容库是QNX工具链的必备组件[^1] 3. **解压SDK** ```bash $ tar xvf qnx710-env-ubuntu.tar -C /opt/ ``` 4. **配置环境变量** 在`~/.bashrc`添加: ```bash export QNX_TARGET=/opt/qnx710/target/qnx7 export QNX_HOST=/opt/qnx710/host/linux/x86_64 export PATH=$PATH:$QNX_HOST/usr/bin ``` 5. **验证安装** ```bash $ source ~/.bashrc $ qnxconfig --verify ```
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值