如何使用 Raspbian 准备 Raspberry Pi,以便我可以从 Linux 主机交叉编译 Qt5 程序?

Gre*_*low 3 cross-platform raspberry-pi raspbian

我想在 Linux 上为 Raspberry Pi 1 设置一个交叉编译环境。特别是我想尝试前沿版本,即 Raspbian 测试 + Qt5 开发分支。

这个问题: 如何为 Raspberry Pi 1 创建现代交叉编译工具链?

...解释了如何获得 gcc 编译器,它可以为 Raspberry Pi 1 创建代码。 Raspbian 本身是否需要更改才能使用它?如果有,是哪些?

Ari*_* M. 5

完整的工具链正是您所需要的

工具链是一组协同工作为您的系统生成二进制文件的工具。根据您构建工具链的方式,它可能最终仅对自己的映像起作用,这实际上不是问题,您只需克隆映像并随意升级即可。

首先,了解你需要什么:

  • 功能旗舰系统。这是你的参考板和你的参考发行包、你的包和你的东西。你可能想要一个标准的 Raspbian 或者你可能想要一些额外的东西,比如 OpenCV 或更少的东西,比如删除 Xorg。你说你想要前沿,所以适合你的口味。
  • 系统根。理想情况下,这是您的功能旗舰系统的副本,其中添加了开发标题。就我而言,它完全相同,对于 Raspbian,这是您的第二个分区的映像,即托管/ 的分区。
  • 交叉编译器。这是在 x86 或 x86_64 上运行时为 ARM 生成代码的编译器。这通常是一个专门的gcc
  • 交叉编译 qmake。对于 Qt,您需要一个交叉 qmake,这是一个 qmake,它将生成 Qt 二进制文件并使用您生成 arm Qt 软件所需的东西。
  • ARM Qt 库。这是你的功能旗舰系统的一部分,为了清楚起见,我在这里列举它。它们将由您使用 sysroot 和交叉编译器进行编译。
  • 用于交叉编译的 Qt 库。这是生成交叉编译 qmake 和 ARM Qt 库时将遵循的步骤的产物。这将安装在您的主机 x86 系统中。

那么你如何获得这一切呢?

收集您自己的工具链

  • 功能旗舰系统(FFF)。只需获取您的 raspbian 映像并随意安装您的其他软件,无论您想安装什么,只需将其安装在实时 Raspberry 上即可。
  • 系统根。拥有 FFF 后,使用 dd 生成第二个 raspbian 分区的映像。取下您的卡,将其插入 x86 系统并使用 dd。还有其他使用 mount 和 offsets 的方法,但这要简单得多。
  • 交叉编译器。除非你真的知道你在做什么,否则不要自己创造它。有功能交叉编译器
  • Qmake 用于交叉编译、ARM Qt 和 Qt 库。这是有趣的部分......

交叉编译 Qt 5

当你从 git 获得 Qt 时,你可以随心所欲地使用 Qt。由于这不是真正的 Wiki,我将仅列举步骤。本指南更详细地解释了它

  1. 让您的 FFF、图像和交叉编译器工作。
  2. git clone你的 Qt,选择一个标签(版本)
  3. 挂载你的 sysroot
  4. 如果您在 x64 下,请获取 ia32-libs
  5. 编译qtbase然后make install重要提示:获得 qtbase 后,它会生成自己的 qmake,从现在开始使用它
  6. 使用从 qtbase 生成和安装的 qmake 来构建您想要的任何其他 Qt 模块。
  7. 请记住在您构建的所有 Qt 模块上使用 make install。所有这些“安装”都会将这些二进制文件复制到您的sysroot
  8. 让你的 Qt 进入你的 FFF。您要么复制文件夹并避免弄乱权限,要么更轻松地卸载您的 sysroot,然后使用 dd 将修改后的映像转储到您从中获取它的同一个物理分区。这些是ARM Qt 库
  9. 在构建 qtbase 时,它​​会将一些东西安装到您自己的 x86 系统中。这是用于交叉编译的 Qmake,将其用于 Qt Creator 以生成交叉编译的二进制文件以及您的交叉编译器。

有些笔记没人告诉你

  • 似乎没有可供下载的工具链。这是因为它们在很大程度上取决于您的特定设置。
  • 不要使用系统或常规qmake进行交叉编译。使用您生成的 qmake,因为它与您的 FFF 完美契合,其中包含路径和其他特定内容。
  • 我再说一遍,不要打扰创建你的交叉编译器
  • 如果您需要额外的开发文件怎么办?将它们安装在您的 FFF 上,然后复制您的分区以拥有新的 sysroot。
  • 是的,您可以使用 Qt 自动部署,甚至可以在实时 Pi 上进行远程调试。