当前位置: 首页 > article >正文

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。

编译配置完成。

http://www.lryc.cn/news/2395713.html

相关文章:

  • java中cocurrent包常用的集合类操作
  • 晶振频率稳定性:5G 基站与航天设备的核心竞争力
  • 基于python脚本进行Maxwell自动化仿真
  • Blueprints - List View Widget
  • docker-compose搭建prometheus以及grafana
  • 进阶智能体实战八、需求分析助手(基于qwen多模态大模型对图文需求文档分析)(帮你生成 模块划分+页面+表设计、状态机、工作流、ER模型)
  • Git -> Git Stash临时保存当前工程分支修改
  • 多线程和并发之线程
  • apptrace 的优势以及对 App 的价值
  • android studio debug调试出现 IOException异常
  • PySpark 中使用 SQL 语句和表进行计算
  • [Python] Python中的多重继承
  • 在 RedHat 系统(RHEL 7/8/9)中安装 ​​pythonnet​​ 和 ​​.NET Core​​ 的完整指南
  • vr中风--数据处理模型搭建与训练
  • Socket网络编程之UDP套件字
  • 前端学习(7)—— HTML + CSS实现博客系统页面
  • Bert和GPT区别
  • 聊一聊接口测试中缓存处理策略
  • RuoYi前后端分离框架实现前后端数据传输加密(二)之前端篇
  • 如何使用.Net Reactor 批量加密 DLL
  • 基于视觉的车道线检测完整代码:让驾驶更安全的开源解决方案
  • Intellij IDEA 查找接口实现类的快捷键
  • 鸿蒙仓颉开发语言实战教程:自定义tabbar
  • 03.MySQL表的操作详解
  • 28 C 语言作用域详解:作用域特性(全局、局部、块级)、应用场景、注意事项
  • MySQL 事务解析
  • 题海拾贝:压缩字符串
  • 【Hive 运维实战】一键管理 Hive 服务:Metastore 与 HiveServer2 控制脚本开发与实践
  • 振动力学的三类基本问题
  • 04.MySQL数据类型详解