Compile Qt application for raspberry pi
在树莓派上开发和运行 Qt 应用程序时,编译是一个关键环节。本文将介绍三种不同的编译方法, 从最简单的本地编译到高效的跨平台编译。
直接在树莓派上编译
这是最直接的方法:在树莓派上面安装 Qt 的相关依赖,下载程序代码,直接编译即可。但这种 方法的缺点是需要设置树莓派环境,启动开发板,步骤繁琐。
在 PC 使用 chroot 环境
这种方法利用内核的 binfmt 支持,使用 qemu 在 x86 主机上模拟 ARM 环境进行编译。主要步骤 是直接在 PC 上下载树莓派的文件系统映像,使用 chroot 进入到根目录中,利用 PC 处理器完成 编译。
这种方法的缺点是树莓派的文件系统包含的无关软件比较多,占用额外的磁盘空间。
使用 docker 环境
由于树莓派是基于 Debian 发行版,可以直接利用 Debian 的编译环境创建一个容器,Dockerfile 如下:
FROM debian:trixie-slim
RUN sed -i 's/deb.debian.org/mirrors.pku.edu.cn/g' /etc/apt/sources.list.d/debian.sources && \
apt-get update && \
apt-get upgrade -y && \
apt-get install -y build-essential qtbase5-dev qtbase5-dev-tools libqt5serialport5-dev && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
groupadd -g 1000 builduser && \
useradd -u 1000 -g builduser builduser
WORKDIR /build
USER builduser
CMD ["/bin/bash"]使用下面命令生成映像文件:
$ docker build --platform=linux/arm64 -t pi-dev .这样就可以用这个 docker 来编译树莓派工程了。可以通过 -v 参数将本地目录挂载到容器内部,然后
启动容器进行编译。
总结
使用 Docker 自然是最轻量的方案,还可以写成脚本自动完成编译。或者可以创建 CI 流水线,在代码托管 平台上自动完成编译。