【问题标题】:C compiler error: cdefs.h not foundC 编译器错误:找不到 cdefs.h
【发布时间】:2015-09-11 18:53:05
【问题描述】:

(回答了类似的问题,但没有一个真正适用于此)

我有一块采用 Fedora 20 和 armv71 架构(32 位)的开发板。我已经通过 yum 安装了所有需要的 gcc 库,例如 gccg++cmakeglibcglibc-devel 等(glibc-devel 相当于 Fedora 中的 libc6-dev-i386)。

我正在尝试编译一个 C 项目,该项目在 MAC OS 64 位和 Ubuntu 64 位上编译得很好,但在我运行 Fedora 20 时出现以下错误 make

/usr/include/features.h:364:25: fatal error: sys/cdefs.h: No such file or directory
 #  include <sys/cdefs.h>

当我检查/usr/include/sys 文件夹时,它是空的并且cdefs.h 文件在系统上的任何地方都不存在。

问题似乎是我缺少一个包(可能?),但由于我似乎已经全部安装,所以无法确定缺少哪个包。或者 32 位 C 编译器由于特定原因缺少该文件?任何帮助将不胜感激。

【问题讨论】:

  • "Running make" 可以有效地做任何事情。您需要显示编译器调用命令。这通常隐藏在规则中,行首带有@ 符号。只需删除 @ 即可查看实际情况。
  • 查看此线程:askubuntu.com/questions/470796/…。基本上你只需要安装 libc6-dev-i386
  • 我见过那个线程,但是在 Fedora 中相当于 libc6-dev-i386 的是 glibc-devel,检查这个线程:superuser.com/questions/491504/… 但是,我的系统中安装了 glibc 和 glibc-devel (也更新了问题)
  • 在我的 Fedora 22 上 /usr/include/sys/cdefs.h 由包 glibc-headers 提供。
  • glibc-headers 也安装了这个版本:glibc-headers-2.18-19.fc20.armv7hl

标签: c++ c linux gcc glibc


【解决方案1】:

使用此命令(或类似命令,取决于您的操作系统)

apt-get install libc6-dev-i386

【讨论】:

    【解决方案2】:

    由于您使用的是基于 RPM 的发行版,因此您可以这样做:

    # yum provides '*sys/defs.h'
    

    让工具完成最困难的部分。

    【讨论】:

    • 它到底是做什么的?
    • 扫描您的 RPM 数据库并告诉您提供以“sys/defs.h”结尾的文件的 RPM 的名称。
    猜你喜欢
    • 2016-11-24
    • 2014-07-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多