升级macOS Sonoma后Gcc 13.1.0无法编译Ada等语言的解决办法咨询
临时解决macOS Sonoma下GCC 13.1.0与Alire编译失败的方案
问题背景
升级至macOS Sonoma后,GCC 13.1.0(M1/aarch64、Intel/x86_64)搭配Alire编译Ada/C/C++程序时出现兼容性错误,报错包含-macosx_version_min has been renamed to -macosx_version_min及退出码4,此前在macOS Ventura下正常运行。
临时解决办法
指定兼容的macOS版本参数
在编译时手动添加-mmacosx-version-min=13.0(对应Ventura版本),强制GCC使用旧版系统兼容规则:- 终端用gnatmake编译Ada程序:
gnatmake your_program.adb -cargs -mmacosx-version-min=13.0 - 在GPR工程文件中全局配置:
package Compiler is for Default_Switches ("ada") use ("-mmacosx-version-min=13.0"); for Default_Switches ("c") use ("-mmacosx-version-min=13.0"); for Default_Switches ("c++") use ("-mmacosx-version-min=13.0"); end Compiler;
- 终端用gnatmake编译Ada程序:
降级GCC至12.x版本
GCC 12系列对Sonoma兼容性更好,通过Alire安装并切换:alr toolchain install gcc=12.3.0 alr toolchain select gcc=12.3.0安装完成后重新编译项目即可。
用Apple Clang替代GCC编译C/C++部分
对于包含C/C代码的Ada项目,保留GCC的Ada前端,将C/C编译器切换为Xcode自带的clang:
在GPR工程文件中添加:package Compiler is for C_Command use "/usr/bin/clang"; for Cpp_Command use "/usr/bin/clang++"; end Compiler;包装GCC自动注入兼容参数
创建shell脚本包装GCC命令,自动添加兼容参数:- 创建脚本
~/bin/gcc:#!/bin/bash exec /path/to/your/gcc-13.1.0 "$@" -mmacosx-version-min=13.0 - 赋予执行权限:
chmod +x ~/bin/gcc - 同理创建
~/bin/g++、~/bin/gnatgcc,替换对应GCC路径后添加相同参数。 - 确保
~/bin在PATH优先级高于GCC原始路径(可通过echo $PATH确认)。
- 创建脚本
内容的提问来源于stack exchange,提问作者Ryan Pochmara
相关产品推荐
相关产品推荐

