macOS Mojave上的gcc损坏

时间:2018-10-28 06:39:12

标签: macos gcc

好像我的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?

3 个答案:

答案 0 :(得分:4)

正确的答案是在此线程中:https://stackoverflow.com/a/52530212/1377912

默认情况下,新的Xcode不提供标头。您应该手动安装它:

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

答案 1 :(得分:0)

也许这是一个愚蠢的答案,但是您是否尝试过创建并编译一个非常简单的c文件?但是,在我的莫哈韦沙漠系统中,我尝试了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

答案 2 :(得分:0)

当我写这个答案时,莫哈韦沙漠已被弃用,现在是大苏尔的时代!但是这个问题依然存在!

我不知道以下命令是否适用于 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"

它可能会消除您的 fatal error: 'stdio.h' file not found 错误。如果这个错误被消除了,你可能会面临新的问题,不要把它们算作这个问题,并通过操纵它来失去你的成功!在这种情况下,只需关心您的新问题并尝试一一解决它们!

希望这个回答对你有用