为了实现C++20,试图使用 /usr/bin/gcc,而不是Xcode自带的clang

编程语言 2026-07-09

我在尝试使用通过Homebrew安装在 /usr/bin/gcc的 GCC编译器,运行在我的MacBook(正在运行Tahoe)上的机器上。每次运行它时,它都会默认使用Xcode的 clang。我要编译C++20程序,编译选项设为 -std=c++20,但在诸如import std; 这样的命令处仍然遇到错误。

我正在运行 gcc -std=c++20 main.cpp

我的路径是:

/usr/bin/gcc /opt/homebrew/opt/node@22/bin /opt/homebrew/opt/ruby/bin /opt/homebrew/bin /opt/anaconda3/condabin /opt/homebrew/opt/node@22/bin /opt/homebrew/opt/ruby/bin /opt/homebrew/bin /Library/Frameworks/Python.framework/Versions/3.14/bin /Library/Frameworks/Python.framework/Versions/3.14/bin /Library/Frameworks/Python.framework/Versions/3.14/bin /Library/Frameworks/Python.framework/Versions/3.13/bin /usr/local/bin /System/Cryptexes/App/usr/bin /usr/bin /bin /usr/sbin /sbin /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin /opt/pkg/env/active/bin /opt/pmk/env/global/bin /Library/Apple/usr/bin /usr/local/go/bin

当我运行 gcc -v 时,得到的是:

Apple clang version 21.0.0 (clang-2100.0.123.102)

Target: arm64-apple-darwin25.4.0

Thread model: posix

InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

解决方案

Macs 上,g++/gcc只是对clang的包装器。

除非你明确去查找并安装了g++/gcc,否则你现在使用的是clang。


查看你的PATH:

/usr/bin/gcc /opt/homebrew/opt/node@22/bin /opt/homebrew/opt/ruby/bin /opt/homebrew/bin /opt/anaconda3/condabin /opt/homebrew/opt/node@22/bin /opt/homebrew/opt/ruby/bin /opt/homebrew/bin /Library/Frameworks/Python.framework/Versions/3.14/bin /Library/Frameworks/Python.framework/Versions/3.14/bin /Library/Frameworks/Python.framework/Versions/3.14/bin /Library/Frameworks/Python.framework/Versions/3.13/bin /usr/local/bin /System/Cryptexes/App/usr/bin /usr/bin /bin /usr/sbin /sbin /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin /opt/pkg/env/active/bin /opt/pmk/env/global/bin /Library/Apple/usr/bin /usr/local/go/bin
  1. PATH应该用 ':' 分隔,而不是空格(假设你是手动设置的)。
  2. 这不对:/usr/bin/gcc 你可能想要的是 /usr/bin/

你可以用以下命令查看你的shell正在调用的应用程序:which

> which g++
/usr/bin/g++

如果你不信任它,你也可以检查它是否是一个符号链接:

> ls -la /usr/bin/g++
-rwxr-xr-x  78 root  wheel  118880 Feb 24 19:41 /usr/bin/g++

如果你不想冒着shell找不到正确版本的风险,可以明确地使用完整路径:

> touch x.cpp
> /usr/bin/g++ --version x.cpp
Apple clang version 21.0.0 (clang-2100.0.123.102)
Target: arm64-apple-darwin25.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

除非你显式地安装了g++/gcc(很可能需要自己编译),否则默认安装的是 clang++/clang

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章