stdint.h“没有这样的文件或目录”错误yocto sdk
问题描述:
我正在构建与Yocto/poky(morty分支)的系统。建立图像和SDK可以正常工作。stdint.h“没有这样的文件或目录”错误yocto sdk
我已经在一台机器(除了生成机器)上安装了SDK以交叉编译工具。
我已经加载了环境
source /opt/mydistro/2.2.1/environment-setup-cortexa7hf-neon-vfpv4-poky-linux-gnueabi
建设有
arm-poky-linux-gnueabi-gcc test.cpp
测试文件将失败,消息
/opt/mydistro/2.2.1/sysroots/x86_64-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/6.2.0/include/stdint.h:9:26: fatal error: stdint.h: No such file or directory
# include_next <stdint.h>
编制有明确SYSROOT
arm-poky-linux-gnueabi-gcc test.cpp --sysroot=/opt/mydistro/2.2.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/
失败
... include/gnu/stubs.h:7:29: fatal error: gnu/stubs-soft.h: No such file or directory ...
这是为什么不工作?什么不见了?
答
好吧,你不能直接使用交叉编译器是由于SYSROOT-poising。见yocto built tool chain search path issue。
因此,您应该始终使用$CC
而不是直接使用交叉编译器。使用$CC
不仅可以指定sysroot,还可以指定诸如-march=...
,-mfloat-abi=...
,-mtune=...
等等(选项的确切数目取决于您正在构建的机器)。这应该解决了你所有的问题。
答
在我的情况下,一个解决方案来编译和链接我的例子是使用下面的命令:
arm-poky-linux-gnueabi-gcc --sysroot=/opt/mydistro/2.2.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/ -mfloat-abi=hard
我不知道为什么float-abi必须显式设置为hard。我的机器构建配置说TARGET_FPU =“硬”? – powerpete