我有一个可以成功构建的 Yocto bitbake 图像配方。
但是,使用命令生成 SDK 时,相同的图像配方会失败-c populate_sdk。
该错误似乎是由混合 32 位和 64 位版本的库引起的,这在仅使用二进制文件构建映像时没问题,但在填充 SDK 根文件系统时头文件会相互冲突:
Running transaction check
Transaction check succeeded.
Running transaction test
Error: Transaction check error:
file /usr/bin/curl-config from install of lib32-curl-dev-7.53.1-r0.cortexa7hf_neon_vfpv4 conflicts with file from package curl-dev-7.53.1-r0.aarch64
file /usr/include/nettle/version.h from install of lib32-nettle-dev-3.3-r0.cortexa7hf_neon_vfpv4 conflicts with file from package nettle-dev-3.3-r0.aarch64
file /usr/include/nettle/nettle-stdint.h from install of lib32-nettle-dev-3.3-r0.cortexa7hf_neon_vfpv4 conflicts with file from package nettle-dev-3.3-r0.aarch64
Run Code Online (Sandbox Code Playgroud)
-c populate_sdk在不将 32 位版本的库(配方)从生产映像中完全排除的情况下,排除它们的最佳方法是什么?
您可以通过从 TOOLCHAIN_TARGET_TASK 变量中删除目标包来从工具链中删除目标包,也可以通过从 TOOLCHAIN_HOST_TASK 中删除主机包来将其删除。
例如,要从 sdk 中删除目标包“curl-dev”,您必须在映像配方中添加以下内容:
TOOLCHAIN_TARGET_TASK_remove = "curl-dev"
Run Code Online (Sandbox Code Playgroud)
要从 sdk 中删除相同的主机包,您必须在镜像配方中添加以下内容:
TOOLCHAIN_HOST_TASK_remove = "curl-dev"
Run Code Online (Sandbox Code Playgroud)