qt ubuntu 20.04 交叉编译
一、交叉编译环境搭建
1.下载交叉编译工具链:https://developer.arm.com/downloads/-/gnu-a
可以根据自己需要下载对应版本,当前最新版本是10.3,
笔者使用10.3编译后的glibc.so版本太高(glibc_2.3.3, glibc_2.3.4, glibc_2.3.5),与实际部署的系统版本(glibc_2.3.1)不兼容,所以选择了低一个版本。
2. 下载qt 源码,笔者使用的是qt5.12.12版本:http://download.qt.io/archive/qt/5.12/5.12.12/single/qt-everywhere-src-5.12.12.tar.xz 直接复制地址用迅雷下载,在网页上已无法直接下载。
3. 将交叉编译工具链及源码复制到虚拟机上(系统x64版本,所以下载arrch64),
可以用要本目录挂载方式放在/mnt/hgfs/.. 目录下(这个目录解压编译会比较慢),所以选择放在home下的用户目录。
4.解压交叉编译器,tar -xvf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
文件夹名称太长了,笔者改成aarch64-none-linux-gnu-9.2,并移动到/opt目录下:
5. 设置环境变量export PATH=$PATH:/opt/aarch64-none-linux-gnu-9.2/bin , 执行aarch64-none-linux-gcc -v 查看gcc版本,如果环境变量设置成功则能正常输出版本信息。
6. 解压qt源码,tar -xvf qt-everywhere-src-5.12.12.tar.xz, 然后执行cd qt-everywhere-src-5.12.12/qtbase/mkspecs/linux-aarch64-gnu-g++,修改qmake.conf,修改前可备份原来的。
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/aarch64-none-linux-gnu-9.2/bin/aarch64-none-linux-gnu-gcc
QMAKE_CXX = /opt/aarch64-none-linux-gnu-9.2/bin/aarch64-none-linux-gnu-g++
QMAKE_LINK = /opt/aarch64-none-linux-gnu-9.2/bin/aarch64-none-linux-gnu-g++
QMAKE_LINK_SHLIB = /opt/aarch64-none-linux-gnu-9.2/bin/aarch64-none-linux-gnu-g++
# modifications to linux.conf
QMAKE_AR = /opt/aarch64-none-linux-gnu-9.2/bin/aarch64-none-linux-gnu-ar cqs
QMAKE_OBJCOPY = /opt/aarch64-none-linux-gnu-9.2/bin/aarch64-none-linux-gnu-objcopy
QMAKE_NM = /opt/aarch64-none-linux-gnu-9.2/bin/aarch64-none-linux-gnu-nm -P
QMAKE_STRIP = /opt/aarch64-none-linux-gnu-9.2/bin/aarch64-none-linux-gnu-strip
load(qt_config)
6. 修改完后换到qt-everywhere-src-5.12.12目录,执行mkdir buildQt5.12,cd buildQt5.12,执行:../configure -prefix $PWD/../../arrch64-arm-9.2-qt5.12 -xplatform linux-aarch64-gnu-g++ -confirm-license -shared -no-opengl -no-openssl -device-option CROSS_COMPILE=aarch64-none-linux-gnu- -optimized-qmake -opensource -nomake tests -nomake examples -skip qtdeclarative , 还有更多参数可选择,之前参考别人的写了很多参数,一直报错,经过筛选目前这些没有报错。有些参数增加后编译没有报错,make install时报错,经过一段折腾,目前暂定这些参数,这些参数可以写成脚本形式
7.
7. configure完成后,执行sudo make -j8 根据实际情况配置,-j8是多线程执行,20多分钟编译完成,然后执行sudo make install安装。
8. 安装编译完后,通过readelf -h **.so 查看so版本是否正确。
在编译过程中遇到很多问题,各种错误不记录了,接下来的交叉编译代码。
8. 切换到项目目录,用生成的qmake绝对路径执行 qmake,会生成makefile,然后make编译项目。
二、 QtCreator 交叉编译配置
1.设置环境变量
2.在菜单上选择工具->选项,配置编译选项,配置完成后点击ok。
编译配置完成。
相关文章:

qt ubuntu 20.04 交叉编译
一、交叉编译环境搭建 1.下载交叉编译工具链:https://developer.arm.com/downloads/-/gnu-a 可以根据自己需要下载对应版本,当前最新版本是10.3, 笔者使用10.3编译后的glibc.so版本太高(glibc_2.3.3, glibc_2.3.4, glibc_2.3.5)…...
java中cocurrent包常用的集合类操作
文章目录 前置ConcurrentHashMapCopyOnWriteArrayList/CopyOnWriteArraySet 前置 常规的集合类,比如 ArrayList,HashMap 当作为多线程下共享的变量时候,操作它们时会涉及线程安全的问题 ConcurrentHashMap 适合:需要频繁读写的…...

晶振频率稳定性:5G 基站与航天设备的核心竞争力
在当今科技飞速发展的时代,电子设备的性能和可靠性至关重要。晶振作为电子设备中的核心部件,为系统提供精确的时间和频率基准。晶振的频率稳定性直接影响着设备的整体性能,从日常生活中广泛使用的智能手机、智能穿戴设备,到对精度…...

基于python脚本进行Maxwell自动化仿真
本文为博主进行Maxwell自动化研究过程的学习记录,同时对Maxwell自动化脚本(pythonIron)实现方法进行分享。 文章目录 脚本使用方法脚本录制与查看常用脚本代码通用开头定义项目调整设计变量软件内对应位置脚本 设置求解器软件内对应位置脚本…...

Blueprints - List View Widget
一些学习笔记归档; 需要读取动态数据把多个条目显示在UI上的时候,可能用到List View组件;假如有Widget要使用在List View中,此Widget需要继承相关接口: 这样就能在List View控件中选择已经继承接口的Widget组件了&…...

docker-compose搭建prometheus以及grafana
1. 什么是 Prometheus? Prometheus 是一个开源的系统监控和告警工具,由 SoundCloud 于 2012 年开始开发,现为 CNCF(Cloud Native Computing Foundation)项目之一。它特别适合云原生环境和容器编排系统(如 …...
进阶智能体实战八、需求分析助手(基于qwen多模态大模型对图文需求文档分析)(帮你生成 模块划分+页面+表设计、状态机、工作流、ER模型)
🚀 基于通义千问大模型的智能需求分析助手:一键生成需求分析、模块划分、ER 图和工作流! 在软件开发的早期阶段,需求分析是至关重要的一环。然而传统方式往往需要产品经理和架构师投入大量精力分析需求文档、划分模块、设计数据结构,效率低、容易出错。 为了解决这一痛…...
Git -> Git Stash临时保存当前工程分支修改
Git Stash 基本概念 git stash 用于临时保存当前工作目录的修改,让你可以快速切换到一个干净的工作状态,之后再恢复这些修改。 1. 保存当前修改 git stash # 或者添加描述信息 git stash save "修改描述"2. 查看stash列表 git stash list3…...

多线程和并发之线程
线程 前面讲到进程:为了并发执行任务(程序),现代操作系统才引进进程的概念 分析: 创建开销问题:创建一个进程开销:大 子进程需要拷贝父进程的整个地址空间 通信开销问题:进程间的通…...

apptrace 的优势以及对 App 的价值
官网地址:AppTrace - 专业的移动应用推广追踪平台 apptrace 的优势以及对 App 的价值 App 拉起作为移动端深度链接技术的关键应用,能实现从 H5 网页到 App 的无缝跳转,并精准定位到 App 内指定页面。apptrace 凭借专业的技术与丰富的经验…...

android studio debug调试出现 IOException异常
解决Android调试端口无法打开的问题,出现"Unable to open debugger port"错误时,可以进入app设置,选择Debugger选项,将Debug type更改为Java Only模式。这个方法适用于Android Studio调试时遇到的端口连接问题ÿ…...
PySpark 中使用 SQL 语句和表进行计算
PySpark 中使用 SQL 语句和表进行计算 PySpark 完全支持使用 SQL 语句和表进行 Spark 计算。以下是几种常见的使用方式: 1. 使用 Spark SQL from pyspark.sql import SparkSession# 创建 SparkSession spark SparkSession.builder.appName("SQLExample&quo…...
[Python] Python中的多重继承
文章目录 Lora中的例子 Lora中的例子 https://github.com/michaelnny/QLoRA-LLM/blob/main/qlora_llm/models/lora.py#L211C1-L243C10如果继承两个父类,并且父类的__init__参数不一样,则可以显式的调用父类init;如果用super().__init__()则需…...
在 RedHat 系统(RHEL 7/8/9)中安装 pythonnet 和 .NET Core 的完整指南
1. 安装 .NET Core SDK RHEL 8/9(推荐) bash # 添加微软仓库 sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm# 安装 .NET 8 SDK(包含运行时) sudo dnf install -y dot…...

vr中风--数据处理模型搭建与训练
# -*- coding: utf-8 -*- """ MUSED-I康复评估系统(增强版) 包含:多通道sEMG数据增强、混合模型架构、标准化处理 """ import numpy as np import pandas as pd from sklearn.model_selection import train_te…...
Socket网络编程之UDP套件字
基于的UDP套件字编程流程 UDP传输层的协议,面向无连接,数据报的传输层协议。 “ 无连接 ”:不可靠 在网络环境较好的情况下,UDP效率较高在网络环境较差的情况下,UDP可能存在丢包的情况同时一些“ 实时应用 ” 采用UD…...

前端学习(7)—— HTML + CSS实现博客系统页面
目录 一,效果展示 二,实现博客列表页 2.1 实现导航栏 2.2 实现个人信息 2.3 实现博客列表 三,实现博客正文页 3.2 复用 3.4 实现博客正文 四,实现博客登录页 4.1 版心 4.2 登录框 五,实现博客编辑页 5.1 …...
Bert和GPT区别
BERT(Bidirectional Encoder Representations from Transformers)和 GPT(Generative Pre-trained Transformer)都基于 Transformer 架构,但在设计目标、预训练任务和应用场景上有很大区别: 1. 架构方向性 B…...
聊一聊接口测试中缓存处理策略
目录 一、强制绕过缓存 添加时间戳参数 修改请求头 二、主动清除缓存 清除本地缓存 清除服务端缓存(需权限) 清除CDN缓存 三、测试缓存逻辑 首次请求获取数据 记录响应头中的缓存标识 验证缓存生效 测试缓存过期 四…...

RuoYi前后端分离框架实现前后端数据传输加密(二)之前端篇
一、背景 本文是RuoYi前后端分离框架实现前后端数据传输加密(一)之后端篇文章配套的,主要介绍前端对自定义字段传输加密的实现,两篇文章结合可以完整的完成RuoYi前后端分离框架对API通信过程中实现自定义字段加密传输。前端的加解密实现,不涉及到界面的修改,仅仅是方法的…...
如何使用.Net Reactor 批量加密 DLL
若在日常工作中加密操作的使用频率较高,每次启动程序并执行选择 DLL 文件等操作均会显得较为繁琐。在此,分享一种可提升操作效率的方法:通过命令行方式调用脚本,即可实现 DLL 或 Exe 文件的批量加密处理。具体操作如下:…...
基于视觉的车道线检测完整代码:让驾驶更安全的开源解决方案
基于视觉的车道线检测完整代码:让驾驶更安全的开源解决方案 【下载地址】基于视觉的车道线检测完整代码 这是一个基于视觉的车道线检测开源项目,提供完整的代码示例,采用滑动窗口算法实现。项目通过逐行扫描图像,精准识别曲线车道…...
Intellij IDEA 查找接口实现类的快捷键
快捷键是 IntelliJ IDEA(包括 PyCharm、WebStorm 等 JetBrains 家族 IDE) 中非常常用的代码导航功能。下面是对你提到的两个快捷键的详细解释和用途说明: 🔍 1. 查找接口的实现类(或方法的实现) …...

鸿蒙仓颉开发语言实战教程:自定义tabbar
大家周末好呀,今天继续分享仓颉语言开发商城应用的实战教程,今天要做的是tabbar。 大家都知道ArkTs有Tabs和TabContent容器,能够实现上图的样式,满足基本的使用需求。而仓颉就不同了,它虽然也有这两个组件,…...
03.MySQL表的操作详解
MySQL表的操作详解 MySQL 表的操作概述创建表 2.1 创建表的基本语法查看表结构修改表 4.1 新增列 4.2 修改列属性 4.3 修改列名 4.4 修改表名 4.5 删除列删除表 1. MySQL表的操作概述 MySQL表的操作是数据库开发和管理中的核心内容,主要涉及**数据定义语言&#…...

28 C 语言作用域详解:作用域特性(全局、局部、块级)、应用场景、注意事项
1 作用域简介 作用域定义了代码中标识符(如变量、常量、数组、函数等)的可见性与可访问范围,即标识符在程序的哪些位置能够被引用或访问。在 C 语言中,作用域主要分为三类: 全局作用域局部作用域块级作用域 需注意&am…...

MySQL 事务解析
1. 事务简介 事务(Transaction) 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 经典案例࿱…...

题海拾贝:压缩字符串
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞,关注&am…...
【Hive 运维实战】一键管理 Hive 服务:Metastore 与 HiveServer2 控制脚本开发与实践
一、引言 在大数据开发中,Hive 作为重要的数据仓库工具,其核心服务metastore(元数据服务)和hiveserver2(查询服务)的启停管理是日常运维的基础操作。手动执行命令启停服务不仅效率低下,还容易因…...

振动力学的三类基本问题
振动问题的分类依赖于分类的出发点,本文从系统论的角度来分析振动问题的分类。如图1,一个振动系统,包括三个方面:输入、系统特性(或称为系统模型)、输出。其中,输入指外界载荷,包括力…...