嵌入式软件 - 树莓派 4 的 Qt 交叉编译设置脚本 计算机程序的屏幕截图

Raspberry Pi 4 的 Qt 交叉编译

设置脚本

先决条件

硬件

宿主机 [台式/笔记本计算机]:任何 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 并已在运行,应该需要通过以下方式之一将其连接到您的网络:

  • 如果您有显示器: 将其连接到您的 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 [email protected] 

这将要求提供密码,如果未更改过,则为默认密码(“raspberry”),因此在要求提供时就使用这个密码。

可以将您的 Raspberry Pi 配置为允许从另一台计算机访问,无需在每次连接时都要提供密码。有关更多详细信息,请参阅此处

4. 获取脚本

使用 ssh 连接到您的 Pi 并下载 zip 文件:

ssh [email protected]

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 许可证获得许可。

致谢