Mac Ventura系统无法找到编译器问题求助
macOS Ventura下gcc/gnat1执行报错的解决方法
问题背景
升级至macOS Ventura后,编译时出现gcc: error trying to exec 'cc1': execvp: No such file or directory,使用VS Code构建Ada程序时也出现类似的gcc: error trying to exec 'gnat1': execvp: No such file or directory报错,且已确认cc1/gnat1文件实际存在,PATH环境变量也已包含对应工具链的bin目录,但旧系统下可正常运行。
解决方法
1. 更新Xcode Command Line Tools
Ventura对旧版开发工具兼容性较差,先确保Command Line Tools为最新版本:
xcode-select --install sudo xcode-select --reset
执行后验证gcc版本:
gcc --version
2. 手动指定工具链的执行前缀
gcc/gnat在调用cc1/gnat1时依赖内部路径映射,Ventura的环境可能破坏了默认映射,可通过环境变量指定:
- 针对gcc的cc1问题:
或者编译时直接指定路径:export GCC_EXEC_PREFIX=/opt/gnat-ce-2021/libexec/gcc/gcc -B/opt/gnat-ce-2021/libexec/gcc/x86_64-apple-darwin15/10.3.1/ your_source_file.c - 针对Ada的gnat1问题:
若要永久生效,可将上述export命令添加到export GNAT_EXEC_PREFIX=/opt/gnat-ce-2021/libexec/gcc/x86_64-apple-darwin15/10.3.1/~/.zshrc或~/.bash_profile中,执行source ~/.zshrc生效。
3. 安装适配Ventura的GNAT工具链
旧版GNAT CE 2021未针对Ventura优化,建议替换为最新适配版本:
- 卸载旧工具链:
sudo rm -rf /opt/gnat-ce-2021 - 下载并安装最新的GNAT Community版本(选择适配Ventura的Intel/Apple Silicon版本)
- 重新配置PATH:
echo 'export PATH="/opt/gnat-ce-2023/bin:$PATH"' >> ~/.zshrc source ~/.zshrc
4. 调整系统完整性保护(SIP)设置(谨慎操作)
Ventura的SIP可能限制了/opt目录下深层可执行文件的调用,可临时禁用SIP测试:
- 重启Mac,按住
Command+R进入恢复模式 - 打开终端,执行:
csrutil disable - 重启系统后测试编译
- 若问题解决,可选择保持禁用(存在安全风险),或恢复SIP:
csrutil enable
内容的提问来源于stack exchange,提问作者Roger
相关产品推荐
相关产品推荐

