【问题标题】:stdint.h "no such file or directory" error on yocto sdkyocto sdk 上的 stdint.h “没有这样的文件或目录”错误
【发布时间】:2017-04-05 13:44:53
【问题描述】:

我正在使用 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 ...

为什么这不起作用?什么不见​​了?

【问题讨论】:

    标签: cross-compiling yocto


    【解决方案1】:

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

    因此,您应该始终使用$CC 而不是直接使用交叉编译器。使用$CC 不仅会指定sysroot,还会指定-march=...-mfloat-abi=...-mtune=... 等内容(选项的确切数量取决于您正在构建的机器)。这应该解决了你所有的问题。

    【讨论】:

      【解决方案2】:

      就我而言,编译和链接我的示例的一种解决方案是使用以下命令:

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

      【讨论】:

      • 我不知道为什么 float-abi 必须明确设置为硬。我的机器构建配置说 TARGET_FPU="hard"?
      猜你喜欢
      • 1970-01-01
      • 2021-07-15
      • 2023-01-13
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 2021-10-31
      相关资源
      最近更新 更多