我正在使用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 ...
为什么这不起作用?缺什么?
答案 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