【问题标题】:Compiling with gcc in macOS Mojave在 macOS Mojave 中使用 gcc 编译
【发布时间】:2019-03-29 04:24:05
【问题描述】:

在更新到 Mojave 之前,我正在编译 C 程序。我使用的是旧版本的 gcc 7.3,它是按照 here 的说明安装的。

然后我更新到 Mojave 并尝试用 gcc main.c 编译下面的简单程序:

#include <stdio.h>
int main(){
    printf("Hello World\n");
    return 0;}

这会导致以下错误:

/usr/local/lib/gcc/x86_64-apple-darwin17.5.0/7.3.0/include-fixed/stdio.h:78:10: fatal error: _stdio.h: No such file or directory
 #include <_stdio.h>
      ^~~~~~~~~~
compilation terminated.

如果我删除包含,它将编译并带有 printf 的隐式声明警告,但仍会正确编译和运行,打印 Hello World。有谁知道这个问题以及我该如何解决?

【问题讨论】:

  • 我运行了您在上面粘贴的程序,它对我来说运行良好。但是,当我将stdio.h 更改为_stdio.h 时,我得到了同样的错误。我会仔细检查并确保你那里没有错字。如果这不是问题,那么它与编译器中的一些错误有关。尝试安装一个不同的?
  • 我认为您必须在升级到 Mojave 后至少启动一次 Xcode GUI 并进行更新才能正常工作。
  • @BilalSaleem:此问题不是由拼写错误引起的,从错误消息中可以看出,该错误消息显示尝试在某些安装路径中包含 _stdio.h 来自 stdio.h,而不是源或通常的用户路径中的头文件。这是编译器安装损坏的证据。
  • 不确定这是不是复制品,但请查看这些可能的原件:12

标签: c macos gcc


【解决方案1】:

我想出了如何解决它。我去了

/Library/Developer/CommandLineTools/Packages/

然后打开并安装 macOS_SDK_headers_for_macOS_10.14.pkg。

【讨论】:

  • 乍一看,我认为这可能是您的源代码中的拼写错误。然后我注意到 Eric Postpischil 的评论:编译器正确地找到了 `"stdio.h" ...但 stdio.h 正在寻找 "_stdio.h" ...这是丢失的。很高兴您知道了,感谢您发布解决方案!
  • 非常感谢您找到这个!用 homebrew 安装 gcc-8 也有同样的问题,这个解决方案是唯一有效的方法。
  • 此文件在 macOS Mojave 上不存在。
猜你喜欢
  • 1970-01-01
  • 2020-05-08
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多