stdint.h "no such file or directory" yocto sdk 错误
stdint.h "no such file or directory" error on yocto sdk
我正在用 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 ...
为什么这不起作用?什么东西少了?
在我的例子中,一种编译解决方案 link 我的示例是使用以下命令:
arm-poky-linux-gnueabi-gcc --sysroot=/opt/mydistro/2.2.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/ -mfloat-abi=hard
嗯,你不能直接使用交叉编译器是因为sysroot-poising。参见 。
因此,您应该始终使用 $CC
而不是直接使用交叉编译器。使用 $CC
不仅会指定 sysroot,还会指定 -march=...
、-mfloat-abi=...
、-mtune=...
等内容(选项的确切数量取决于您使用的机器)重新构建)。那应该已经解决了你所有的问题。
我正在用 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 ...
为什么这不起作用?什么东西少了?
在我的例子中,一种编译解决方案 link 我的示例是使用以下命令:
arm-poky-linux-gnueabi-gcc --sysroot=/opt/mydistro/2.2.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/ -mfloat-abi=hard
嗯,你不能直接使用交叉编译器是因为sysroot-poising。参见
因此,您应该始终使用 $CC
而不是直接使用交叉编译器。使用 $CC
不仅会指定 sysroot,还会指定 -march=...
、-mfloat-abi=...
、-mtune=...
等内容(选项的确切数量取决于您使用的机器)重新构建)。那应该已经解决了你所有的问题。