Ubuntu24搭建针对树莓派的Qt5.15交叉编译环境

1. 前言unsetunset

需要在树莓派上开发基于Qt的应用程序。想要开发编译程序,前提是必须有开发环境。根据这需求尝试了两种方式:

  1. 直接在树莓派上安装Qt相关库及环境,直接在树莓派上编译应用程序并运行。
  2. 在ubuntu上搭建Qt相关的交叉编译环境,交叉编译后放在树莓派运行。

方式1的好处是树莓派上联网后需要什么库直接通过apt-get安装,简单方便、省时省力。缺点是在上面直接开发Qt相关的程序,显得有些捉襟见肘,不是很丝滑。最主要的一个原因是还有不能浪费了我这个高配置的电脑,果断选择了在Ubuntu上搭建相关的开发环境(这符合平时的开发习惯)。

unsetunset2. 确定版本unsetunset

要搭建对应树莓派上的交叉编译环境,必须要对应好GCC和Qt的版本,防止版本不一致导致的莫名奇妙的问题。

  • 系统: Debian11
  • GCC: gcc version 10.2.1 20210110 (Debian 10.2.1-6)
  • Qt: 5.15.2

下载需要的软件包

  • 10.2.1-2021.01-x86_64_aarch64-linux-gnu下载(https://snapshots.linaro.org/components/toolchain/binaries/10.2-2021.01-3/aarch64-linux-gnu/)
  • Qt5.15.2官方下载(https://download.qt.io/archive/qt/5.15/)

unsetunset3. 搭建交叉编译环境unsetunset

  • 系统:Ubuntu24.04

解压工具链到指定目录

tar xvf gcc-linaro-10.2.1-2021.01-x86_64_aarch64-linux-gnu.tar.xz -C /opt 

解压Qt源码到指定目录

tar xvf qt-everywhere-src-5.15.2.tar.xz -C /opt

4. 主机编译(ubuntu24.04)unsetunset

安装必要的环境

sudo apt-get install bison python gperf pkg-config gdb-multiarch

创建sysroot目录

我们交叉编译的程序是部署到树莓派板卡环境运行,需要构建和树莓派一样的库环境,我们需要创建一个sysroot目录, 在编译Qt时指定了 -sysroot=dir该逻辑目录,编译过程中需要引用的库,头文件,就到 dir/xx 目录下去找。

两种方式:

  1. 直接复制树莓派上的文件到sysroot
  2. 通过rsync同步树莓派文件到sysroot

我采用第二种方式:

# ubuntu24创建sysroot目录
mkdir -p ~/sysroot/usr
mkdir -p ~/sysroot/lib

cd ~
# 根据实际板卡IP和用户,修改下面
rsync -avz --rsync-path="sudo rsync" --delete raspberry@192.168.100.10:/lib sysroot/lib
rsync -avz --rsync-path="sudo rsync" --delete raspberry@192.168.100.10:/usr/include sysroot/usr
rsync -avz --rsync-path="sudo rsync" --delete raspberry@192.168.100.10:/usr/lib sysroot/usr

编写编译脚本

编译

# 直接运行脚本
./autobuild.sh

# 生成的Qt库位于脚本指定目录下
声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 2
收藏 3
关注 36
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧