gpt4 book ai didi

raspberry-pi - 如何为 Raspberry Pi OS 64 位交叉构建 debian 包

转载 作者:行者123 更新时间:2023-12-05 05:58:40 29 4
gpt4 key购买 nike

我有一个可用的 debian 软件包,我想将其移植到当前版本的 Raspberry Pi OS 64 位(而非 32 位 Raspbian)。

令人困惑的是,虽然 Debian 本身似乎很健壮,能够在自己的包中启用交叉构建,但关于如何构建 raspberry Pi OS(64 位)包的官方文档似乎要少得多¹。

由于我相对确定这应该是可能的,所以我问:

如何采用 debian .dsc/debian 规则,并在 x86_64 上构建 64 位 Raspberry Pi OS 64 位兼容镜像

  • 没有使用 QEMU 在 arm64 上实际构建图像,没有访问实际的 RPi,
  • 使用已知可在 aarch64 上的 sid 上运行的现有 debian 软件包,并且应该可以向后移植,
  • 确保它实际上是针对正确的 Raspbian 依赖集构建的。

我想这是一个相当标准的事情,我只是不知道该怎么做。我很高兴使用容器和类似技术,因为我可以轻松地将其与 CI 集成。

我不打算使用 Arm64 VM,因为有问题的软件在 x86_64 服务器上本地构建和测试大约需要一个小时。


¹我已经谈到了 Raspbian 名气的 plugwash,正如这个问题的早期版本所示:关于 Raspbian OS 64 位的遗传性存在重大混淆:它不是 Raspbian 也不是基于它。但是包括维基百科和 RPi 基金会在内的人们自己将 Raspberry Pi OS 和 Raspbian(“Raspberry Pi OS,以前称为 Raspbian”)混为一谈,后者仅为 32 位。

最佳答案

RaspberryPi 文档 here已经解释了如何从源代码构建 x64 内核。你想要的是在某种程度上完全一样。请注意内核构建页面上的这一行:

sudo apt install crossbuild-essential-arm64

Linux 主机上的此命令会安装一个在 AMD64 机器上运行的编译器,但会生成一个在 ARM 机器上运行的二进制文件。

这一行告诉编译器实际构建该架构的源代码:

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs

图像模块 dtbs 特定于您的项目。它们可能不同。

至于您的 Debian 软件包,您无法将 AMD64 软件包转换为 ARM 软件包。如果您的 RaspberryPi 包不存在于官方或某些第三方存储库中,则必须从源代码构建。

找到您的包的源代码并以与 RaspberryOS 非常相似的方式构建它。

如果你的包有依赖关系,它会变得有点复杂。首先,在您的 RaspberryPi 上安装依赖项。然后你应该在你的主机上设置一个 sysroot,它基本上是 RaspberryPi 上预安装包的镜像。然后,为了编译您的包,您应该将 sysroot 地址提供给交叉编译器,以便它可以找到依赖项。

还有另一种方法,您可以将包的源代码放在您的树莓派上并在本地构建它,根据源代码可能需要很长时间。只是为了感觉,没有 WebEngine 模块的 Qt 源代码对我来说花了 48 小时。但是 Qt 很大。

总而言之,如果您的包二进制文件不在任何存储库中,您必须从源代码编译它。

不同项目和可执行文件的交叉编译彼此非常相似。要清楚地了解该过程,查找一些其他移植到 RaspberryPi OS 的项目可能会有所帮助。诸如 Qt、Android 的 TagLib 和...

关于raspberry-pi - 如何为 Raspberry Pi OS 64 位交叉构建 debian 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68410208/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com