You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级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;
      
  • 降级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命令,自动添加兼容参数:

    1. 创建脚本~/bin/gcc:
      #!/bin/bash
      exec /path/to/your/gcc-13.1.0 "$@" -mmacosx-version-min=13.0
      
    2. 赋予执行权限:
      chmod +x ~/bin/gcc
      
    3. 同理创建~/bin/g++、~/bin/gnatgcc,替换对应GCC路径后添加相同参数。
    4. 确保~/bin在PATH优先级高于GCC原始路径(可通过echo $PATH确认)。

内容的提问来源于stack exchange,提问作者Ryan Pochmara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 14:33:20