Build 当我构建raspberrypi时,为什么yocto要构建x86系统根?
我通过Yocto制作了树莓最小图像。 我只是按照下面文章中的说明进行操作 它为树莓和rpi系统根创建了一个合适的映像。但是,它也会生成x86_64系统根。如果不创建这些,构建时间将更短 为什么在生成ARM映像时生成x86_64二进制文件Build 当我构建raspberrypi时,为什么yocto要构建x86系统根?,build,raspberry-pi,yocto,Build,Raspberry Pi,Yocto,我通过Yocto制作了树莓最小图像。 我只是按照下面文章中的说明进行操作 它为树莓和rpi系统根创建了一个合适的映像。但是,它也会生成x86_64系统根。如果不创建这些,构建时间将更短 为什么在生成ARM映像时生成x86_64二进制文件 $ ls build/tmp/sysroots raspberrypi raspberrypi-tcbootstrap x86_64-linux $ ls x86_64-linux/ bin etc lib sbin usr var $ fi
$ 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
...
正如您所看到的,为x86_64体系结构构建的所有包都以
-native
结尾。其他包需要这些本机包进行交叉编译。例如,在x86_64上需要一个本机编译器来构建交叉编译器。此交叉编译器还必须是本机的,才能为目标编译二进制文件。一些库和工具也是如此(您在build/tmp/work/x86_64-linux/
目录中看到的所有内容)。
因此,并不是您为raspberry映像本地构建选择的所有包,而是Yocto交叉编译所需的包
此外,Yocto仅在检测到包中的更改时才构建包。
因此,您只会“丢失”自上次生成以来尚未生成或更改的包的生成时间
有关此主题的更多信息,请查看Yocto交叉工具链生成的功能原理[1]
[1] 正如您看到的,为x86_64体系结构构建的所有包都以
-native
结尾。其他包需要这些本机包进行交叉编译。例如,在x86_64上需要一个本机编译器来构建交叉编译器。此交叉编译器还必须是本机的,才能为目标编译二进制文件。一些库和工具也是如此(您在build/tmp/work/x86_64-linux/
目录中看到的所有内容)。
因此,并不是您为raspberry映像本地构建选择的所有包,而是Yocto交叉编译所需的包
此外,Yocto仅在检测到包中的更改时才构建包。
因此,您只会“丢失”自上次生成以来尚未生成或更改的包的生成时间
有关此主题的更多信息,请查看Yocto交叉工具链生成的功能原理[1]
[1]