先决条件
硬件
宿主机 [台式/笔记本计算机]:任何 x86/x86_64 AMD/Intel 计算机
目标机 [Raspberry Pi 4]:Raspberry Pi 4
软件
宿主机:任何 Linux 计算机(经过 Ubuntu 20.04 LTS 测试) 目标机:Raspberry Pi 4 Linux 32-bit OS(经过 Raspbian Bullseye Lite 测试)
注
在背景中,使用了 abhiTronix 提供的 Raspberry Pi 的交叉编译工具链。
其他
存储空间和时间要求:构建目录大约需要 10GB 的空间,大约需要 2-5 小时来完成(基于依赖关系和宿主机规格)。网络:目标机 (Raspberry Pi) 和宿主机(在此进行交叉编译)都必须具有 Internet 访问,并且必须在同一网络上才能遵循这些说明。
目标机 (Raspberry Pi) 的步骤/设置
1. 从头开始(可选)
重要提示
如果您刚买了新的 Raspberry Pi,或者想从头开始,只需按部就班即可。否则,如果您的 Raspberry Pi 已完成了设置、已在运行并且已连接好网络,则只需跳到第 2 步。
注
本节假设您至少有 10GB SD 卡用于安装 Raspbian (Stretch/Buster/Bullseye) 操作系统和一台将其上传的笔记本/台式计算机。
1.1. 下载软件并准备 SD 卡
- 在此处将最新版本的 Raspbian (Bullseye) 下载到您的笔记本/台式计算机上。- 您需要一个镜像写入器将下载的操作系统写入 SD 卡(在我们的案例中为 micro SD 卡)。您可以使用 Balena Etcher。- 将 SD 卡插入笔记本/台式计算机,然后运行镜像写入器。打开后,浏览并选择下载的 Raspbian 镜像文件。选择正确的设备,即代表 SD 卡的驱动器。
注
如果所选驱动器(或设备)不同于 SD 卡,则其他所选驱动器将会受损。所以要小心!
- 写入完成后,弹出 SD 卡并将其插入 Raspberry Pi 并打开。Raspberry Pi 应该开始启动。- 请记住,启动 Pi 后,可能会有要求提供用户凭据(如“用户名”和密码)的情况。Raspberry Pi 自带默认用户名“pi”和密码“raspberry”,每次要求提供时可以使用。#### 1.2 设置网络现在,您已设置好 Raspberry Pi 并已在运行,应该需要通过以下方式之一将其连接到您的网络:
2. 设置 SSH
如果您有显示器: 在 Raspberry Pi 终端上输入:“sudo raspi-config”,在终端上应该会弹出菜单。要启用 SSH ,请转到:“Interfacing Options”(接口选项) -> “SSH” -> “Yes”(是),然后单击“OK”(确定)将其启用。最后选择“Finish”(完成)并退出。- 如果您没有显示器: 设置网络后,如果您没有显示器,或是在远程操作显示器,则启用 SSH,只需完成以下操作:取出 SD 卡,将其插入计算机的读卡器,仅需在 SD 卡中的“/boot/parition”路径中创建一个名为“ssh”的空文件。现在,将 SD 卡插回 Raspberry Pi。### 3. 打开终端
**使用 SSH 从其他笔记本/台式计算机:**要从其他计算机连接到您的 Raspberry Pi,请将以下命令复制并粘贴到终端窗口(但要将“192.160.1.47”替换为 Raspberry Pi 的 IP 地址)。
ssh pi@192.168.1.47
这将要求提供密码,如果未更改过,则为默认密码(“raspberry”),因此在要求提供时就使用这个密码。
注
可以将您的 Raspberry Pi 配置为允许从另一台计算机访问,无需在每次连接时都要提供密码。有关更多详细信息,请参阅此处。
4. 获取脚本
使用 ssh 连接到您的 Pi 并下载 zip 文件:
ssh pi@192.168.1.47
wget https://www.interelectronix.com/sites/default/files/scripts/qt-cross-compile-rpi4.zip
unzip qt-cross-compile-rpi4.zip
cd qt-cross-compile-rpi4
您也可以从此处通过浏览器下载 zip 文件。使脚本 qt-cross-compile-script-pi4.sh 可执行并加以执行:
sudo chmod +x qt-cross-compile-script-pi4.sh
sudo ./qt-cross-compile-script-pi4.sh
安装所有需要的软件包后,将创建所需的目录并正确设置 Symlinks。
重要提示
请确保您的 Raspberry Pi 和此(交叉编译所在的)宿主机必须在同一网络上。
宿主机 (Linux Ubuntu) 的步骤/设置
对于测试,我们使用了安装了干净 Ubuntu 20.04 LTS 版的虚拟机 (vmware)。### 1. 下载 ZIP 文件
wget https://www.interelectronix.com/sites/default/files/scripts/qt-cross-compile-rpi4.zip
unzip qt-cross-compile-rpi4.zip
cd qt-cross-compile-rpi4
您也可以过浏览器从此处通下载 zip 文件。### 2. 使脚本 qt-cross-compile-script-pi4.sh 可执行并加以执行
chmod +x qt-cross-compile-script-host.sh
3. 更改脚本中的变量
您需要在脚本中更改您 Raspberry Pi 的 IP 地址 (raspberry_ip) 以及是否更改了 Raspberry 的用户 (raspberry_user) 和密码 (raspberry_pwd)。
nano qt-cross-compile-script-host.sh
4. 执行脚本
sudo ./qt-cross-compile-script-host.sh
脚本执行以下操作:
- 安装所有需要的软件包
- 创建所需的目录 (
~/rpi-qt
) - 下载和解压 Qt 源码
- 修补 Qt 源码
- 下载和解压交叉编译器
- rsync 来自 Raspberry Pi 的文件
- 下载 Symlinker 并设置 Symlinks
- 配置 Qt 构建
- 生成并安装 Qt 构建
- 将 Qt 二进制文件 rsync 到 Raspberry
目标机的最后一步(Raspberry Pi)
更新 Raspberry Pi 上的链接器
输入以下命令以更新设备,让链接器查找新的 QT 二进制文件:
echo /usr/local/qt5.15/lib | sudo tee /etc/ld.so.conf.d/qt5.15.conf
sudo ldconfig
配置 Qt Creator 进行交叉编译
阅读博客 在 Ubuntu 20 Lts 上配置 Qt-Creator 进行交叉编译,以便将编译的二进制文件(文件夹“~/rpi-qt/qt5.15”)包含在 Qt Creator 中。
版权许可
版权所有 © 2022 Interelectronix e.K.
本项目源代码根据 GPL-3.0 许可证获得许可。
致谢
- 本文档灵感来自交叉编译最新 Raspberry Pi Qt 框架的分步说明。非常感谢 @abhiTronix。- 感谢 QT 框架提供源文件