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

2023-10-31

在CSDN上查阅了大部分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

 

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu下qnx7.0交叉编译qt5.9.7源码 的相关文章

  • 在Qt中,如何正确实现委托?

    我遵循模型 视图 控制器范例 我很确定模型和视图是正确的 但我认为我的代表做错了一些事情 一切都 有效 除了第一次单击控件只是 点亮控件 而第二次单击与之交互之外 这是代表通常的实施方式吗 我的实现需要大量的构造和销毁 由scoped pt
  • QFileDialog 作为 TableView 的编辑器:如何获取结果?

    我正在使用一个QFileDialog作为某些专栏的编辑QTableView 这基本上有效 对一些焦点问题取模 请参阅here https stackoverflow com questions 22854242 qfiledialog as
  • 如何使用 qt 库中的调试符号为 qt 5.5 创建开发 shell

    我有一个开发外壳buildInputs条目包括qt55 qtbase 这很好用 今天 我在 qt 库中发生了段错误 我想要带有调试符号的 qt 库 我看了一下nixpkgs pkgs development libraries qt 5 5
  • 无法将 [未定义] 分配给 QColor

    我正在使用 Qt 5 11 构建 运行代码 代码中有QML风格如下 Button style delegate Component id enabledButtonStyle ButtonStyle padding top 0 paddin
  • 运行最新版本时没有“最新”消息?

    我正在尝试使用Sparkle https sparkle project org与 Qt Go 的绑定 https github com therecipe qt app 闪光 m import
  • 在信号/槽处理期间删除 QObject

    我知道从槽处理中删除 QObject 可能会使应用程序崩溃 因为它可能有其他排队的事件 因此 我将使用 obj gt deleteLater 而不是使用 delete obj 据我所知 obj 等待处理所有排队的事件 然后 删除 obj Q
  • qt 如何知道按钮被点击?

    我正在尝试编写一个程序 用声音进行一些操作 我的问题是我有 3 个播放按钮和 3 个标签 我希望无论我单击 播放 按钮 都应该播放按钮附近标签中名称的声音 我有一个没有任何参数的播放插槽 那么 如何分别连接到每个播放按钮和每个标签呢 实际上
  • MapItemView 在 dataChanged 信号后不会更新

    我正在使用 QMLMapItemView使用 C 的组件QAbstractListModel基于模型 这MapItemView当模型重置时 或者每当添加新项目或删除现有项目时 工作正常 但是 那MapItemView不反映对已添加项目的更改
  • 构建qt程序时未定义的符号:找不到qt_version_tag

    我正在学习Qt5 6 我正在使用 Ubuntu 14 4 当我链接我的程序时 出现以下错误 undefined reference to qt version tag 在 CMakeLists txt 中 link libraries Qt
  • 如何通过信号和槽传递参数?

    我的 GUI 包括LineEdit and a 按钮 当 的时候按钮单击后 插槽clicked 叫做 我想在之间建立信号槽关系clicked 作为信号和doSomething 作为插槽 问题是doSomething 无权访问 UI 并且do
  • 在 QML 中控制纹理 3D 对象的不透明度

    我对 QML 中的 Qt 3D 有点陌生 我正在尝试控制 Qt 3D 的不透明度textured3D 对象 我正在使用简单qml3d https github com tripolskypetr simpleqml3d测试项目来做到这一点
  • Qt - 意外的 GDB 退出

    我正在尝试开发一个应用程序 该应用程序创建图像并使用双线性插值填充颜色像素 然后显示它 到目前为止我的代码如下 include
  • 渲染具有透明度的纹理时,OpenGL 不需要的像素

    我已经为这个问题苦苦挣扎了一段时间了 当我使用 OpenGL 渲染 2D 纹理 在无透明度和部分透明度之间的过渡上具有透明度值 时 我得到了一些烦人的灰色像素 我认为这是像素值插值的产物 关于如何改进这一点有什么想法吗 I m attach
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • C++:头文件中全局函数的多重定义错误

    该函数是全局的 在头文件中定义 暂时地我想把它留在那里 头文件还构成一个具有内联函数的特定类 其中一个函数调用this全局函数 源文件不包含任何有问题的全局函数 有关错误原因的任何提示吗 如果有人感兴趣的话我可以发布代码 mainwindo
  • Qt 5.5 QOpenGLWidget 链接错误未链接任何 openGL 调用

    我尝试使用 Qt 5 5 1 构建一个简单的 OpenGL 应用程序 一切都很好 直到我尝试使用 glClearColor 等 openGL 本机函数调用 该小部件实际上编译并产生黑屏 但在我尝试使用任何 openGL 本机函数后 它甚至不
  • QPainter 性能高帧率

    我试图在 QPainter 中以 60fps 的速度显示视频 在 OpenGLwidget 中 我遇到一个问题 有时绘图花费的时间太长 并且在使用 QPainter 时发生下一个重绘事件 这会生成警告和随机崩溃 有几个问题 是否有一种 Qt
  • 如何将 QByteArray 转换为十六进制字符串?

    我有打击QByteArray QByteArray ba ba 0 0x01 ba 1 0x10 ba 2 0x00 ba 3 0x07 我真的不知道如何将此 QByteArray 转换为结果字符串 其中包含 01100007 我将使用 Q
  • 加载 QPixmap 数据的更好方法

    更好的方法来做到这一点 没有QImage QImage image width height QImage Format RGB888 memcpy image bits m frameRGB gt data 0 height width
  • 具有多个父项的 Qt 树模型

    我想构建一棵树 其中一个元素可以引用另一个元素 我想要构建的树是 像这样的东西 A B C D E F P this is a pointer to C D first child of C E second child of C I fo

随机推荐

  • python脚本寻找Java文件方法

    统计 Java 文件中方法行数 最近接到一个需求 有一个安全扫描 可以扫描到是那个Java文件有问题 但是不知道是该文件下哪个方法有问题 所以想根据行号找到对应方法进行统计 本文将介绍如何使用 Python javalang 库实现这个功能
  • java自动化测试

    Java是一种强大的编程语言 也可以用于自动化测试 以下是使用Java进行自动化测试的一般步骤 确保您已安装Java开发环境 JDK 在开始之前 请先安装适合您系统的Java JDK 并设置正确的环境变量 选择自动化测试框架 Java有多个
  • 新手入门:Python和C语言哪个更难?零基础学哪个好?

    Python和C语言哪个难 零基础学哪个好 六月编程语言排行榜 Python直追C语言龙头老大 预计将会有可能超过C语言成为下次的编程语言排行榜第一 于是乎 很多同学又听说Python简单易学 不由心动 那么 我们零基础入门编程的话 选择哪
  • myeclipse破解文件破解后只能使用5天的解决方法

    我装myeclipse真的是已经一个多月了 之前那个 舍友的按照那个方法破解就可以了 但是我的不行 期间重装了好几十次 今天终于不懒 找到了解决的方法 1 按照的方法还是一样的 有finish那一步 取消勾选绿色大 下的勾选项 完成安装后不
  • 2023第十四届蓝桥杯Python大学生B组真题?(真题+附链接)

    第十四届蓝桥杯大赛软件赛省赛 Python 大学 B 组 试题 A 2023 本题总分 5 分 问题描述 请求出在 12345678 至 98765432 中 有多少个数中完全不包含 2023 完全不包含 2023 是指无论将这个数的哪些数
  • 什么是多态,如何在Java中实现多态?

    欢迎来到多态的世界 在这里 我们将探讨Java中的多态性 以及如何让你的代码实现多态性 让我们先从一个有趣的故事开始吧 有一天 一只小猪走进了一家餐馆 它点了一份 红烧猪肉 但是 当它拿到盘子时 却发现上面只有一块 猪肉 而且还是生的 小猪
  • 【毕业设计项目】基于单片机的手势识别设计与实现 - 物联网 嵌入式 stm32 c51

    文章目录 1 简介 2 实现效果 3 使用场景 4 参数说明 5 注意事项 6 最后 1 简介 Hi 大家好 这里是丹成学长 今天向大家介绍一个学长做的单片机项目 基于单片机得手势识别系统 大家可用于 课程设计 或 毕业设计 单片机 嵌入式
  • RFID智能仓储温湿度自动监测系统,物联网+RFID仓库管理-新导智能

    一 RFID仓库温湿度自动监测管理系统 1 1 RFID智能仓库管理系统简介 苏州新导药品储运温湿度监测系统由管理主机 测点终端 运行软件等组成 通过主服务器实时显示和监测各监测点的温湿度状况 自动记录温湿度实际数值 实现药品储存 运输温湿
  • 微信小程序分享功能(uniapp、uView)

    微信小程序分享功能 uniapp uView 该对象已集成到this u中 内部属性如下 uni u mpShare 默认为小程序名称 可自定义 title 分享的标题 默认为当前页面路径 一般无需修改 QQ小程序不支持 path page
  • 回归分析中,证明:总离差平方和=回归平方和+误差平方和。

    证明 总离差平方和 回归平方和 误差平方和 S S T S S R S S E S S T S S R S S E SST
  • java内存结构

    一 Java内存分配 1 Java有几种存储区域 寄存器 在CPU内部 开发人员不能通过代码来控制寄存器的分配 由编译器来管理 栈 在Windows下 栈是向低地址扩展的数据结构 是一块连续的内存的区域 即栈顶的地址和栈的最大容量是系统预先
  • Alpine Docker 安装 bash

    Alpine Linux是一个轻型Linux发行版 它不同于通常的Linux发行版 Alpine采用了musl libc 和 BusyBox以减少系统的体积和运行时的资源消耗 Alpine Linux提供了自己的包管理工具 apk 我们可以
  • Scratch精通之积木的使用

    到目前为止 我们已经学习了很多个代码块了 这些代码块可以完成相应的功能 比如 移动10步 等待1秒 等代码块 我们并不知道它们是如何实现移动或等待功能的 我们只知道可以实现角色移动或等待的效果 这就是编程里面说的封装的概念 所谓封装 就是把
  • Distributed Compilation

    Introduction Distributed compilation is a technique that allows developers to compile code in parallel across multiple m
  • STM32——使用cubemx和keil点亮第一个灯

    一 环境 cubemx安装和搭建见博文 链接 STM32CubeMX安装 keil安装见软件安装管家 注意要是MDK版 二 cubemx操作 1 打开cubemx 2 选择ACCESS TO MCU SLCTOR 创建一个新的工程 3 选择
  • 部署Pod非Running状态,describe查看显示node资源不足

    一 node 节点资源不足的几种情况 1 执行kubectl top node 查看是否真的资源不足 2 报资源不足有多种情况 第一种是真的资源不足 第二种可能是Node上没有打Pod的yaml中定义的nodeSelector 标签所以导致
  • python数据表合并、stack函数、数据分块读取

    数据表的合并 stack函数 数据分块读取 1 concat 2 join 3 merge merge类似sql里面的join 连接方式有inner 默认 left right outer几种模式 对应为内连接 左连接 右连接 全连接 In
  • IDEA 2022 创建 Maven Web 项目教程

    新建项目 IDEA上方工具栏点击 文件 gt 新建 gt 模块 此时的目录结构 需要在main文件夹下补全两个文件夹 点击main 右键 gt 新建 gt 文件夹 IDEA已经给我们提示缺失的文件夹了 依次创建就好 创建后目录结构 IDEA
  • 安装完Anaconda后打不开Spyder

    安装完Anaconda后打不开Spyder python anaconda spyder 安装完Anaconda anaconda navigator里面一切正常 launch spyder后出现spyder的图标 但是spyder仍然打不
  • ubuntu下qnx7.0交叉编译qt5.9.7源码

    在CSDN上查阅了大部分qnx7 0平台编译qt源码的博客 都没有详细给出具体过程和报错处理方式 导致博主在编译时遇到诸多问题 耗时两周才成功编译qnx下aarch64架构版本的qt库 尝试过诸多版本的qt编译之后 发现都会编译过程中报错