QT5.9.9+ARM交叉编译开发环境搭建【详细步骤】

文章目录

  • 1.前言
  • 2.Linaro编译器下载
  • 2.qt-everywhere编译安装
  • 3.Linux下QT Creator安装
  • 4.交叉编译环境配置
  • 5.QT+ARM程序打包
  • 参考文献

1.前言

本文将以32位的ARM开发板为例,搭建基于Ubuntu 16.04虚拟机的QT+ARM开发环境,使用的软件如下:

序号软件名称版本
1qt-opensource-linux-x64-5.9.9.run5.9.9
2qt-everywhere-opensource-src-5.9.9.tar.xz5.9.9
3gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.bz27.3.1
4Ubuntu系统16.04.7
5VMware虚拟机软件16.1.2

2.Linaro编译器下载

Linaro官方下载地址:下载地址
在这里插入图片描述
官网列出的版本很多,大概的版本如下,可以根据自己的需要选择

名称syscall指令集大小端位宽描述
aarch64-linux-gnuLinuxARMv8little64aarch64 Linux Platform
aarch64_be-linux-gnuLinuxARMv8big64aarch64 Linux Platform
arm-linux-gnu-gnueabiLinuxARMv7little32arm EABl soft-float
arm-linux-gnu-gnueabihfLinuxARMv7little32arm EABl hard-float
armeb-linux-gnu-gnueabiLinuxARMv7big32arm EABl soft-float
armeb-linux-gnu-gnueabihfLinuxARMv7big32arm EABl hard-float
arm-eabiBareMetalARMv7little32arm EABl hard-float
armeb-eabiBareMetalARMv7big32arm EABl soft-float

需要看arm开发板是32位的还是64位的,本例中用的开发板是32位的,所以我下载的是gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.bz2
下载完成后,将其解压到文件夹
在这里插入图片描述
重命名:

mv gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf arm-linux-gnueabihf

将目标复制到/opt目录下:

sudo cp -rf arm-linux-gnueabihf/ /opt

安装完成后,还需要手动添加环境变量:

sudo gedit /etc/profile

将下面一行代码加入到/etc/profile的最下面:

export PATH="/opt/arm-linux-gnueabihf/bin:$PATH"

保存退出后执行下面命令,使环境变量生效:

source /etc/profile

可以检查一下有没有安装成功:

arm-linux-gnueabihf-g++ -v

在这里插入图片描述

2.qt-everywhere编译安装

本例中计划安装QT5.9.9,故下载的是对应版本的 qt-everywhere-opensource-src-5.9.9.tar.xz,下载地址见https://download.qt.io/archive/qt/(国内IP可能被屏蔽)
下载完成后,解压:

tar xvf qt-everywhere-opensource-src-5.9.9.tar.xz

修改/qt-everywhere-opensource-src-5.9.9/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf文件
在这里插入图片描述

需要将编译器的具体路径加上去,具体修改如下:

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

# modifications to g++.conf
QMAKE_CC                = /opt/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
QMAKE_CXX               = /opt/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
QMAKE_LINK              = /opt/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = /opt/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++

# modifications to linux.conf
QMAKE_AR                = /opt/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = /opt/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-objcopy
QMAKE_NM                = /opt/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = /opt/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip
load(qt_config)

在这里插入图片描述

首先需要检查 /home/用户名/qt5.9.9/qt5.9.9-arm32这个路径是不是存在,不存在的话要先手动新建,避免make错误!

路径qt-everywhere-src-5.9.9中,执行configure命令,具体参数如下:

./configure -release -nomake examples -no-iconv -no-opengl -no-assimp -no-qt3d-profile-jobs -no-qt3d-profile-gl -xplatform linux-arm-gnueabi-g++ -prefix /home/用户名/qt5.9.9/qt5.9.9-arm32 -opensource -confirm-license

这里,有很多配置项,简单说明下:
用户名:需要换成自己的
-prefix:选项后面的路径就是自己建的一个文件夹,用来存放编译后的qmake和其他一些配置文件(本例中用的是qt5.9.9目录,qt是小写的,便于和后续的QT Creator安装目录区分)
-xplatform linux-arm-gnueabi-g++ : 就是指定编译的为ARM版本 还有一些参数,例如打包ARM64位的话需要设置linux-aarch64-gnu-g++(其实是qtbase/mkspes下对应文件夹的名称)
在这里插入图片描述
然后运行生成命令(较慢 约20分钟):

make -j4

安装命令:

make install

安装成功
在这里插入图片描述

3.Linux下QT Creator安装

下载qt-opensource-linux-x64-5.9.9.run安装包,双击安装
在这里插入图片描述
在这里插入图片描述
组件选择如下:
在这里插入图片描述
安装完成
在这里插入图片描述

4.交叉编译环境配置

(1)配置ARM的qmake,打开QT-工具-选项菜单,按照下图添加自己的qt-everywhere中qmake的路径,有红色“感叹号”也不要紧,后续将配置gcc和g++后,即可消失。
在这里插入图片描述
(2)添加配置的Linaro的gccg++编译器
在这里插入图片描述
在这里插入图片描述

(3)此时配置完Linaro的gcc和g++后,检查QT Version选项中的感叹号消失:
在这里插入图片描述
(4)按照下图,配置 Kits,选择刚才的Qt versions和C++编译器。
在这里插入图片描述
手动配置的Kits有黄色感叹号没有关系,不影响使用。
在这里插入图片描述

5.QT+ARM程序打包

相关教程见:
Qt工程打包,针对Windows(X86)、Linux平台(X86和ARM架构)步骤全解

参考文献

https://blog.csdn.net/qq_39302310/article/details/123997722
https://blog.csdn.net/qq_43286311/article/details/118998717
https://doc.embedfire.com/linux/qt/embed/zh/latest/ebf_qt/install/install_arm.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/940102.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入解析 StarRocks 物化视图:全方位的查询改写机制

小编导读: 本文将重点介绍如何利用物化视图进行查询改写。文章将全面介绍物化视图的基本原理、关键特性、应用案例、使用场景、代码细节以及主流大数据产品的物化视图改写能力对比。 物化视图在 StarRocks 中扮演着至关重要的角色,它是进行数据建模和加速…

挑战一个月基本掌握C++(第五天)了解运算符,循环,判断

一 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符 1.1 算术运算符 假设变量 A 的值为 10,变量 B 的值为…

通过阿里云 Milvus 与 PAI 搭建高效的检索增强对话系统

背景介绍 阿里云向量检索服务Milvus版(简称阿里云Milvus)是一款云上全托管服务,确保了了与开源Milvus的100%兼容性,并支持无缝迁移。在开源版本的基础上增强了可扩展性,能提供大规模 AI 向量数据的相似性检索服务。相…

jQuery总结(思维导图+二维表+问题)

关于什么是jQuery:(下面是菜鸟里的介绍) jQuery 是一个 JavaScript 库。 jQuery 极大地简化了 JavaScript 编程。 jQuery 很容易学习。 而jQuery对我的感受就是,链式运用的很形象,隐式迭代还有一些兼容性强的优点&…

(14)CT137A- 动态数码管设计

(1)了解板卡原理图中数码管的特性:共阳极数码管,公共端连接了电源,FPGA IO口低电平有效,另外,可以看到位选端FPGA位选低电平时选通。 (2)刷新时间的设定:众所…

UG NX二次开发(C#)-如何设置UGOpen的UF_CAM_geom_type_e枚举类型

文章目录 1、前言2、UF_CAM_geom_type_e类型说明3、在C#的类型1、前言 UG NX二次开发提供的帮助文档,无论是c/c++、C#、Python、VB语言,其采用UFun函数时都是参考的UGOpen的帮助文档,即是:UGOPEN函数参考手册(nx6).CHM,后续的都没有怎么增加,这个在哪个版本中都适用。但…

内容与资讯API优质清单

作为开发者,拥有一套API合集是必不可少的。这个开发者必备的API合集汇集了各种实用的API资源,为你的开发工作提供了强大的支持!无论你是在构建网站、开发应用还是进行数据分析,这个合集都能满足你的需求。你可以通过这些免费API获…

vue使用v-if和:class完成条件渲染

1.使用v-if 和v-else 完成主body和暂无数据两个<tbody>标签的条件渲染(注意与v-show效果的区别) 2.v-for完成列表渲染 3.:class完成分数标红的条件控制 删哪个就传哪个的id&#xff0c;基于这个id去过滤掉相同id的项&#xff0c;把剩下的项返回 <td><a click.p…

C++ OpenGL学习笔记(2、绘制橙色三角形绘制、绿色随时间变化的三角形绘制)

相关文章链接 C OpenGL学习笔记&#xff08;1、Hello World空窗口程序&#xff09; 目录 绘制橙色三角形绘制1、主要修改内容有&#xff1a;1.1、在主程序的基础上增加如下3个函数1.2、另外在主程序外面新增3个全局变量1.3、编写两个shader程序文件 2、initModel()函数3、initS…

vue基础作业实验十

vue基础作业实验十 实验要求案例要点&#xff1a;代码以及思考style部分Vue.js 部分Vue 实例部分 这段代码是一个基于 Vue.js 的静态页面&#xff0c;功能包括商品品牌的添加、删除和搜索。 实验要求 一、实验的基本内容 &#xff08;1&#xff09;Vue模板语法。 &#xff08…

PHP+MySQL 学生信息管理系统

目录 MySQL建表指令 主页面展示 主页面源代码如下 增&#xff1a;添加学生信息 添加html如下 html&#xff1a;主要用于显示网页内容 成功添加后回显 ​编辑 增加php如下 删&#xff1a;删除学生信息 删除html如下 成功删除后回显 删除php如下 改&#xff1a;修改学…

QT网络(四):HTTP通信

Qt 网络模块提供一些类来实现 OSI 七层网络模型中高层的网络协议&#xff0c;如 HTTP、FTP、SNMP 等&#xff0c;这些类主要是 QNetworkRequest、QNetworkAccessManager 和 QNetworkReply。QNetworkRequest 类 通过 URL 发起网络协议请求&#xff0c;其也保存网络请求的信息&a…

Pytorch | 从零构建Vgg对CIFAR10进行分类

Pytorch | 从零构建Vgg对CIFAR10进行分类 CIFAR10数据集Vgg网络结构特点性能应用影响 Vgg结构代码详解结构代码代码详解特征提取层 _make_layers前向传播 forward 训练过程和测试结果代码汇总vgg.pytrain.pytest.py 前面文章我们构建了AlexNet对CIFAR10进行分类&#xff1a; Py…

将4G太阳能无线监控的视频接入电子监控大屏,要考虑哪些方面?

随着科技的飞速发展&#xff0c;4G太阳能无线监控系统以其独特的优势在远程监控领域脱颖而出。这种系统结合了太阳能供电的环保特性和4G无线传输的便捷性&#xff0c;为各种环境尤其是无电或电网不稳定的地区提供了一种高效、可靠的视频监控解决方案。将这些视频流接入大屏显示…

ASP.NET |日常开发中连接Mysql数据库增删改查详解

ASP.NET &#xff5c;日常开发中连接Mysql数据库增删改查详解 前言一、连接 MySQL 数据库1.1 安装和引用相关库1.2 建立数据库连接 二、数据库增删改查操作2.1 插入数据&#xff08;Insert&#xff09;2.2 查询数据&#xff08;Select&#xff09;2.3 更新数据&#xff08;Upda…

Go框架比较:goframe、beego、iris和gin

由于工作需要&#xff0c;这些年来也接触了不少的开发框架&#xff0c;Golang的开发框架比较多&#xff0c;不过基本都是Web"框架"为主。这里稍微打了个引号&#xff0c;因为大部分"框架"从设计和功能定位上来讲&#xff0c;充其量都只能算是一个组件&…

LLaMA-Factory 单卡3080*2 deepspeed zero3 微调Qwen2.5-7B-Instruct

环境安装 git clone https://gitcode.com/gh_mirrors/ll/LLaMA-Factory.git 下载模型 pip install modelscope modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir /root/autodl-tmp/models/Qwen/Qwen2.5-7B-Instruct 微调 llamafactory-cli train \--st…

华为ensp--BGP路径选择-AS_Path

学习新思想&#xff0c;争做新青年&#xff0c;今天学习的是BGP路径选择-AS_Path 实验目的: 理解AS_Path属性的概念 理解通过AS_Path属性进行选路的机制 掌握修改AS_Path属性的方法 实验内容: 本实验模拟了一个运营商网络场景&#xff0c;所有路由器都运行BGP协议&#xff…

泛微OA定时任务的设置

泛微OA定时任务 背景 在日常流程开发中&#xff0c;是需要和别的系统进行连接的&#xff0c;比如OA和SAP之间的数据传输。 SAP涉及到的业务数据在生成之后&#xff0c;需要在OA生成对应的流程进行信息的审核&#xff0c;但是毕竟是两个不同的系统&#xff0c;所以数据同步是需…

【Harmony Next】多个图文配合解释DevEco Studio工程中,如何配置App相关内容,一次解决多个问题?

解决App配置相关问题列表 1、Harmony Next如何配置图标&#xff1f; 2、Harmony Next如何配置App名称&#xff1f; 3、Harmony Next如何配置版本号&#xff1f; 4、Harmony Next如何配置Bundle ID? 5、Harmony Next如何配置build号&#xff1f; 6、Harmony Next多语言配置在哪…