macOS Mojave上gcc损坏

3

看起来我的gcc出了故障。

当我尝试从PyPI安装软件包时,会出现以下错误:

    ./uwsgi.h:165:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
In file included from core/protocol.c:1:
./uwsgi.h:165:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.

已安装XCode命令行工具:

    ➜  xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates

已安装来自brew的gcc:

➜  brew install gcc
Warning: gcc 8.2.0 is already installed and up-to-date
To reinstall 8.2.0, run `brew reinstall gcc`

当我尝试识别所使用的gcc版本时,我得到了/usr/bin/gcc。我认为这是XCode版本。
但是在brew中没有gcc二进制文件:
➜  ls /usr/local/bin/gcc-*
/usr/local/bin/gcc-8        /usr/local/bin/gcc-ar-8     /usr/local/bin/gcc-nm-8     /usr/local/bin/gcc-ranlib-8

在这种情况下我该怎么办?如何修复gcc?


在那里...使用/usr/local/bin/gcc-8 - Mark Setchell
是的,但为什么我没有stdio.h? - andre487
尝试至少启动一次Xcode并让其检查更新,还可以前往AppStore检查更新。如果单击Apple菜单->系统偏好设置->软件更新,还有一些新的花哨的软件更新功能。请全部访问一次。 - Mark Setchell
1
同样的问题:gcc(clang)可以工作,但gcc-8(gnu)会出现以下错误:“/usr/local/Cellar/gcc/8.2.0/lib/gcc/8/gcc/x86_64-apple-darwin17.7.0/8.2.0/include-fixed/stdio.h:78:10: 致命错误:_stdio.h:没有那个文件或目录” - Vesal
抱歉,我的问题可能不同...两个编译器都存在问题:https://dev59.com/AFQK5IYBdhLWcg3wEr8X (clang) 和 https://stackoverflow.com/questions/52974321/compiling-with-gcc-in-macos-mojave (gnu)。 - Vesal
3个回答

6

正确的答案在这个帖子中:https://dev59.com/AFQK5IYBdhLWcg3wEr8X#52530212

新版Xcode默认不提供头文件,您需要手动安装:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

1

当我写这篇答案时,Mojave已经被弃用,现在是Big Sur的时代!但是这个问题仍然存在!

我不知道以下命令在Mojave上是否有效,但在Big Sur上有效!如果你仍然有这个问题,只需简单地检查一下。

只需设置CFLAGS(对于C编译器)或CXXFLAGS(对于C++编译器)类似于这样:

export CFLAGS="-isysroot $(xcrun --sdk macosx --show-sdk-path) -I/usr/include -L/usr/lib -I$(xcrun --sdk macosx --show-sdk-path)/usr/include"

或者

export CXXFLAGS="-isysroot $(xcrun --sdk macosx --show-sdk-path) -I/usr/include -L/usr/lib -I$(xcrun --sdk macosx --show-sdk-path)/usr/include"

它可能会消除您的“致命错误:找不到'stdio.h'文件”的错误。如果这个错误被解决了,您可能会面临新的问题,请不要将它们视为此问题并通过操纵而失去成功!在这种情况下,只需关心您的新问题并逐一尝试修复它们!我希望这个答案对您有用。

0
也许这是一个愚蠢的答案,但你尝试过创建和编译一个非常简单的C文件吗?然而在我的Mojave系统中,我尝试了gcc -v命令,输出如下:
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include- 
dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.0 (clang-1000.10.44.2)
Target: x86_64-apple-darwin18.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

这个编译成功了:https://pastebin.com/FZbzdncm还有这个也是:https://pastebin.com/TQs852fJ但是为什么我在编译uWSGI时没有stdio.h呢? - andre487

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接