RK3588开发笔记(一):基于方案商提供的宿主机交叉编译Qt5.12.10

前言

  rk3588开发车机,方案上提供的宿主机只是编译rk sdk的版本,并未编译好Qt,那么需要自行交叉编译Qt系统。选择的Qt的版本为5.12.10。

宿主机准备

  下载并打开宿主机,只有sdk,并没有交叉编译的Qt。   

Qt准备

  下载Qt5.12.10的开源软件(方案商提供)。   

交叉编译工具准备

  下载提供的交叉编译工具链(方案商提供)。   

编译sysroot文件系统准备

  下载编译依赖的目标编译系统(方案商提供)   

开始交叉编译Qt

步骤一:解压编译工具链

shell 复制代码
cd ~/tool
tar xvf aarch64-rockchip1031-linux-gnu.tar.gz

  

  发现单独提供的tool没有bin下的g++工具,于是只好对比一下,发现开发板给过来是一样的,有bin:   

  于是copy过去,直接使用sdk的tool了:   

  

步骤二:配置好系统环境,引入交叉编译工具

  建立一个env.sh脚本:   

shell 复制代码
#!/bin/sh
export PATH=$PATH:/home/ht/work/tool/toolchain/bin

  使用路径:

shell 复制代码
source env.sh

  

  

  

  发现与方案上给过来的平台不匹配,但是都是连接到同一个目标了,先直接干试一试。   

步骤三:解压sysroot

  在编译过程中,基本是不会依赖编译目标系统得库,所以一般都无需配置sysroot,如果依赖,比如编译支持ffmpeg的opencv则依赖交叉编译系统已经编译完的ffmpeg,则讲ffmpeg放入sysroot,也可以直接单独引入额外的库,方式很多,不深究。   

步骤四:解压qt源码

shell 复制代码
cd ~/work/src
tar xvf qt-everywhere-src-5.12.10.tar.xz

  

  

步骤五:配置Qt

  修改平台配置文件:

shell 复制代码
cd /home/ht/work/src/qt-everywhere-src-5.12.10/qtbase/mkspecs/linux-aarch64-gnu-g++
gedit qmake.conf

  修改编译器的名称:   

  然后配置(这里使用平台配置,则需要定位平台配置文件,还有一种方式直接替换交叉编译器的前缀,但此处不是):   这里建立个文件,方便调试,切换到qt的源码文件夹:   

  

shell 复制代码
#!/bin/bash
./configure \
  -prefix /home/ht/work/build-qt5.12.10 \
  -sysroot /home/ht/work/sysroot \
  -confirm-license \
  -opensource \
  -release \
  -make libs \
  -xplatform linux-aarch64-gnu-g++ \
  -no-opengl \
  -no-feature-completer \
  -verbose

  然后配置:

shell 复制代码
chmod +x mk.sh
./mk.sh

     这里有一次入坑编译失败,是路径用户设置为yang,实际为ht,所以root路径找不到的导致的:   

  Ht为用户,/home/ht/xxx配置成功了:   

步骤六:编译Qt

  先使用多线程:

shell 复制代码
make -j8

     

  再跑一次单make。(会出现各种各样的错误,同样的虚拟机同样的代码也会有不同的错误,遇到问题的时候,首先尝试解决,解决不了想办法绕过去,如果真的遇到兼容性问题,就不是一下能解决的,所以一般都是提供编译好的虚拟机了)。

shell 复制代码
make

  

步骤七:安装Qt

shell 复制代码
make install
相关推荐
罗超驿3 分钟前
SpringBoot 快速入门
java·spring boot·后端
卷无止境44 分钟前
除了开发api,FastAPI其实也可以配合jinja2模板写页面
后端·python·fastapi
newerp1 小时前
Redis 操作与缓存策略
后端·程序员·go
newerp1 小时前
GORM ORM 基础
后端·程序员·go
小岛前端1 小时前
AI Skills 已经封神,但新的问题却越来越严重!
前端·后端·github
拖孩1 小时前
一个人 + AI 做的小程序,上线 15 天赚了 10 块 5
前端·后端·微信小程序
newerp1 小时前
CRUD 操作与预处理语句
后端·程序员·go
wei_shuo1 小时前
KES 数据同步与ETL实战:数据集成、转换与实时同步方案
后端
乒乓狂魔14786739970001 小时前
LangGraph:用一张图,编排一群 AI 助手
后端
Gopher_HBo1 小时前
请求绑定 binding(binding/ 包)
后端