【问题标题】:Why yocto build x86 sysroots when I build raspberrypi?为什么在我构建 raspberrypi 时 yocto 构建 x86 sysroots?
【发布时间】:2016-02-25 20:49:18
【问题描述】:

我通过 Yocto 制作了 RaspberryPi 最小镜像。 我只是按照下面文章中的说明进行操作。

http://www.cnx-software.com/2013/07/05/12mb-minimal-image-for-raspberry-pi-using-the-yocto-project/

它为 RaspberryPi 和 rpi sysroots 制作了合适的映像。但是,它也使 x86_64 sysroots。如果不创建这些,构建时间会更短。

为什么它在制作 ARM 映像时制作 x86_64 二进制文件?

$ ls build/tmp/sysroots
raspberrypi  raspberrypi-tcbootstrap  x86_64-linux

$ ls x86_64-linux/
bin  etc  lib  sbin  usr  var

$ find -name sysroots
./build/tmp/work/armv6-vfp-poky-linux-gnueabi/binutils-cross/.../sysroots
...
./build/tmp/work/x86_64-linux/m4-native/.../sysroots
./build/tmp/work/x86_64-linux/gnu-config-native/.../tmp/sysroots
...
./build/tmp/work/x86_64-linux/sqlite3-native/.../sysroots
...
./build/tmp/work/x86_64-linux/openssl-native/.../sysroots
...

【问题讨论】:

    标签: build raspberry-pi yocto


    【解决方案1】:

    正如您所见,为 x86_64 架构构建的所有软件包都有 -native 结尾。其他包需要这些本机包进行交叉编译。例如,您需要在 x86_64 上使用本机编译器来构建交叉编译器。这个交叉编译器也必须是原生的,才能为你的目标编译二进制文件。某些库和工具也是如此(您在build/tmp/work/x86_64-linux/ 目录中看到的所有内容)。 因此,并非您为原生构建的 raspberry 映像选择了所有包,而只有 Yocto 需要用于交叉编译的包。

    此外,Yocto 仅在检测到软件包发生变化时才构建软件包。 因此,您只会“丢失”自上次构建以来尚未构建或更改的包的构建时间。

    有关此主题的更多信息,请查看 Yocto 跨工具链生成 [1] 的功能原理。

    [1]https://www.yoctoproject.org/docs/latest/mega-manual/mega-manual.html#cross-development-toolchain-generation

    【讨论】:

      猜你喜欢
      • 2019-08-05
      • 1970-01-01
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 2020-07-28
      • 2012-05-19
      • 2017-03-09
      相关资源
      最近更新 更多