在macOS下如何配置GCC编译器?
wangxy0311 · · 科技·工程
Upd at 2026.9.5
增加了一些图示方便理解,且进行了文本修缮及一些删改。
前言
如果你是 Windows 或 GNU/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?]
Homebrew 是 macOS 和 Linux 系统上的开源包管理器,brew install 命令用于通过该管理器安装软件包。该命令支持安装命令行工具(Formulae)和图形界面应用(通过 --cask 选项),安装过程自动处理依赖关系并配置环境。用户只需在终端输入类似 brew install git 或 brew install --cask google-chrome 的命令即可完成安装。
注:本段选自百度百科,并进行了一些删改。 ::::info[ Homebrew的eval如何永久生效?]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 Editor或VS Code,可以使用编译命令以实现一劳永逸,比如如果你用的是VS Code,可以在这里输入编译选项:
对于 CP Editor 同理,在如下位置输入编译选项:
当然你也可以在代码开头定义宏,如下:
#define _DONT_USE_SSIZE_T_RENAMES
:::
:::info[为什么会有这种错误?]
这是因为 rsize_t 是 Apple Clang 的安全 size_t 别名,而你当前使用的是 GCC 编译器,编译器识别到了 rsize_t 而无法使用 GCC 解析 rsize_t 导致的编译错误。
:::
::::
::::info[GCC 在哪里?]
由于一些众所周知的原因,Apple 在 macOS Big Sur 以及 Apple Silicon(Apple 自研,M 系列芯片),导致 Mac 电脑出现了两种芯片的型号:Intel 芯片以及 M 芯片,也就导致了 Homebrew 装的 GCC 出现了两种路径:
Intel芯片的路径为/usr/local/bin。Apple Silicon(M系列) 芯片的路径为/opt/homebrew/bin。注:此内容为本人课外了解。 ::::info[怎么更新 GCC?]直接在终端输入: ```bash brew update brew upgrade gcc ``` :::: ## 编辑器推荐
- 如果你经常写大型项目、做开发,建议你使用
CLion,它有完美的代码补全和调试能力。 - 如果你经常打算法竞赛、刷题,建议你使用
CP Editor,它有完整的样例抓取(需要插件)和模版填充等功能。 - 如果你经常写
iOS项目,建议你使用XCode,它天生适合干这个。 - 如果你需要一个比较全能的
IDE,建议你使用VS Code,但本人衷心提醒它需要配置的json可能把你调到怀疑人生。 - 建议不要使用
RedPanda-Cpp(小熊猫 C++),它在Windows上功能齐全,但在macOS上有很多bug(因为是网友提供的Qt版本,不再维护)。
后记
本人写文章不易,点个赞再走吧!