M1 Mac Big Sur系统找不到Homebrew安装的gcc-11,PATH配置正常调用失败
M1芯片Mac(Big Sur系统)gcc编译器指向异常解决指南
问题根因说明
- 之前创建软链接的操作仅在当前工作目录生成了gcc链接文件,该目录不在PATH搜索路径优先级高于/usr/bin的位置,系统仍会优先匹配系统自带的/usr/bin/gcc stub
- macOS系统完整性保护(SIP)锁定了/usr/bin目录,无法直接修改该目录下的gcc文件,只能通过调整PATH优先级或别名的方式完成gcc指向替换
解决方案步骤
1. 调整PATH优先级
M1芯片Mac的Homebrew默认安装路径为/opt/homebrew/bin,需要将该路径调整到PATH最前方,优先于/usr/bin生效:
- 若使用zsh(Mac Big Sur默认shell),编辑
~/.zshrc文件,在末尾添加:
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:$PATH"
- 若使用bash,编辑
~/.bash_profile文件,添加相同内容。
修改完成后执行source ~/.zshrc(zsh环境)或source ~/.bash_profile(bash环境)使配置立即生效。
2. 配置gcc指向Homebrew安装的gcc-11
提供两种可选方案,按需选择即可:
方案A:设置shell别名(无文件修改,安全性最高)
在上述shell配置文件中继续添加以下内容:
alias gcc='gcc-11' alias g++='g++-11' alias cc='gcc-11' alias cxx='g++-11'
重新source配置文件后,直接调用gcc就会自动指向gcc-11。
方案B:在Homebrew bin目录创建软链接(适配需显式调用gcc路径的编译场景)
直接在/opt/homebrew/bin目录下创建全局软链接,不需要修改系统目录:
ln -s /opt/homebrew/bin/gcc-11 /opt/homebrew/bin/gcc ln -s /opt/homebrew/bin/g++-11 /opt/homebrew/bin/g++
因/opt/homebrew/bin优先级已经高于/usr/bin,系统会优先匹配该路径下的软链接。
3. 验证配置生效
执行以下命令确认配置正确:
which gcc:返回结果应为/opt/homebrew/bin/gccgcc --version:返回结果应为gcc-11的版本信息,而非clang版本信息
Kraken编译适配说明
如果编译Kraken时仍自动调用系统clang,可在执行编译命令前显式指定编译器变量:
export CC=gcc-11 export CXX=g++-11 # 后续执行你的configure、make等编译命令即可
内容的提问来源于stack exchange,提问作者Michael McGovern
相关产品推荐
相关产品推荐

