在yocto sdk上stdint.h“没有这样的文件或目录”错误

时间:2017-04-03 14:31:37

标签: cross-compiling yocto

我正在使用Yocto / poky(morty分支)构建一个系统。构建图像和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 ...

为什么这不起作用?缺什么?

2 个答案:

答案 0 :(得分:2)

嗯,你不能直接使用交叉编译器是由于sysroot-poising。请参阅yocto built tool chain search path issue

因此,您应始终使用$CC而不是直接使用交叉编译器。使用$CC不仅会指定sysroot,还会指定-march=...-mfloat-abi=...-mtune=...等内容(确切的选项数取决于您使用的是什么机器&# 39;重建)。那应该可以解决你所有的问题。

答案 1 :(得分:0)

在我的情况下,编译和链接我的示例的一个解决方案是使用以下命令:

arm-poky-linux-gnueabi-gcc --sysroot=/opt/mydistro/2.2.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/ -mfloat-abi=hard