在macOS下如何配置GCC编译器?

· · 科技·工程

Upd at 2026.9.5

增加了一些图示方便理解,且进行了文本修缮及一些删改。

前言

如果你是 WindowsGNU/Linux 操作系统,那么你可以不看这篇文章,因为它们下载 IDE 时自带 GCC 编译器。如果你是 macOS 系统,那么本文会带你手把手配置 GCC 编译器。

准备工作

我们要知道,Windows 的可执行文件名后缀是 .exe,而 macOS 的可执行文件名后缀通常为空,所以无法将 Windows 下的 gcc 文件夹直接转移到 macOS 下,那怎么办呢?这里我推荐一种方法。

我们可以使用 Homebrew 来安装 GCC,如果你不知道 Homebrew 是什么,请见文章末尾 Q & A 部分。

在这之前,你需要先安装命令行工具,因为 Homebrew 安装的 GCC 需要命令行工具,可以在终端中输入以下内容并回车:

xcode-select --install

等待下载完成即可。

然后就是安装 Homebrew了。依然在终端输入如下内容:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装过程中可能会让你输入密码,如下图:

输入密码不会回显,输入完回车即可。

这里安装完最后会有两行开头为 eval 的命令,复制他们并粘贴到命令行里,回车,就把 brew 加进环境变量里了,但此方法仅适用于当前终端,每次打开新终端就会报错 Command not found,如果需要永久配置就要加到系统环境配置文件里,但可能玄学不加任何东西就自动永久配置

接着,终端输入 brew --version 回车,如果输出了 Homebrew 版本号就证明我们配置成功了。

下载 & 配置

安装好了 Homebrew,就可以开始安装 GCC 了,这里你要注意,macOS 自带 Apple Clang 编译器,终端如果输入 gcc 其实是 clang,只不过是个别名罢了。

终端输入如下内容并回车:

brew install gcc

它会自动安装最新版 GCC(比如现在是 GCC 16.1.0)。

然后这里不能输入 gcc --version 来验证是否装好,因为 gcc 还是 clang 的别名,所以要这样输入:

gcc-XX --version
g++-XX --version # 这里 XX 代表你的版本号,比如你是 GCC 16.1.0 那么 XX 就是 16

当然你可能觉得这太别扭了,你可以使用如下命令让 gcc / g++ 成为 gcc-XX / g++-XX 的别名:

echo "alias gcc='gcc-16'" >> ~/.zshrc # 设置别名,但 gcc 版本更新后需要更改数字
echo "alias g++='g++-16'" >> ~/.zshrc
source ~/.zshrc # 立刻执行命令,刷新环境变量

这样就完成了下载。

Q & A

::::info[什么是 Homebrew?] HomebrewmacOSLinux 系统上的开源包管理器,brew install 命令用于通过该管理器安装软件包。该命令支持安装命令行工具(Formulae)和图形界面应用(通过 --cask 选项),安装过程自动处理依赖关系并配置环境。用户只需在终端输入类似 brew install gitbrew install --cask google-chrome 的命令即可完成安装。

注:本段选自百度百科,并进行了一些删改。
::::info[Homebreweval 如何永久生效?]
M 系列芯片执行完安装给出的两行 eval 只是当前终端临时生效,想要永久配置环境变量,直接在终端运行下面一行命令写入 zsh 配置:
```bash
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc # 自行修改 brew 路径,比如 Intel 芯片是 /usr/local/bin/brew
source ~/.zshrc
```
::::
::::info[使用 GCC 编译后,有类似 'rsize_t' not found, did you mean 'ssize_t'? 的报错怎么办?]
这个错误本人也遇到过,当时调了很久,还是没调出来。可能由于本人还是个五年级小学生。 这里有 2 种方法。
:::info[本人自研的玄学方法]
我突然想到,由于 rsize_t_string.h 头文件中,那就可以再复制一份备用头文件,把里面所有 rsize_t 全部改成 ssize_t,然后再把 _string.h 替换为备用头文件,但有个问题:
如果再报这个错,是否还要继续复制?
当然不能这么做,很麻烦。那么你可以写一个 bash 来完成这个操作:
```bash
cp ./Desktop/cpp/_string.h SYSTEM_PATH # 这里 ./Desktop/cpp/_string.h 替换成你备用头文件的真实路径,命名必须是 _string.h,SYSTEM_PATH 替换为系统 _string.h 所在位置,比如 /usr/local/include,或 /opt/homebrew/gcc/include 等,具体看报错信息
```
然后你可以考虑在设置里打开「登录时打开」设置,这样每次开机这个 bash 都会自动运行。
注:本人真实经历,非网上流传的方法,均本人钻研,且该方法不稳定,仅应急使用,平常使用基本无异常,如果追求永久稳定方法可以见下文,具体请自行查阅相关资料。
:::
:::info[宏定义法]
可以在编译命令后面加上定义宏的指令,完整命令如下:
```bash
g++-16 main.cpp -o main -D _DONT_USE_SSIZE_T_RENAMES # 定义 _DONT_USE_SSIZE_T_RENAMES 宏
```
如果你的编辑器是 CP EditorVS Code,可以使用编译命令以实现一劳永逸,比如如果你用的是 VS Code,可以在这里输入编译选项:

对于 CP Editor 同理,在如下位置输入编译选项:

当然你也可以在代码开头定义宏,如下:

#define _DONT_USE_SSIZE_T_RENAMES

::: :::info[为什么会有这种错误?] 这是因为 rsize_tApple Clang 的安全 size_t 别名,而你当前使用的是 GCC 编译器,编译器识别到了 rsize_t 而无法使用 GCC 解析 rsize_t 导致的编译错误。 ::: :::: ::::info[GCC 在哪里?] 由于一些众所周知的原因,Apple2020 年推出了 macOS Big Sur 以及 Apple SiliconApple 自研,M 系列芯片),导致 Mac 电脑出现了两种芯片的型号:2019 年及以前的 Intel 芯片以及 2020 年推出的 M 芯片,也就导致了 Homebrew 装的 GCC 出现了两种路径:

  1. 如果你经常写大型项目、做开发,建议你使用 CLion,它有完美的代码补全和调试能力。
  2. 如果你经常打算法竞赛、刷题,建议你使用 CP Editor,它有完整的样例抓取(需要插件)和模版填充等功能。
  3. 如果你经常iOS 项目,建议你使用 XCode,它天生适合干这个。
  4. 如果你需要一个比较全能IDE,建议你使用 VS Code,但本人衷心提醒它需要配置的 json 可能把你调到怀疑人生。
  5. 建议不要使用 RedPanda-Cpp(小熊猫 C++),它在 Windows 上功能齐全,但在 macOS 上有很多 bug(因为是网友提供的 Qt 版本,不再维护)。

后记

本人写文章不易,点个赞再走吧!