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

Mac M3编译C++报错:'value'不可用(引入于macOS 10.13)

问题描述

在M3芯片MacBook上编译关联PyTorch的C++文件时出现以下错误:

/opt/anaconda3/lib/python3.8/site-packages/torch/include/ATen/core/function_schema.h:603:46: error: 'value' is unavailable: introduced in macOS 10.13
      auto default_val = arg.default_value().value().toIntList();
                                             ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/optional:1057:33: note: 'value' has been explicitly marked unavailable here
    constexpr value_type const& value() const&
                                
fatal error: too many errors emitted, stopping now [-ferror-limit=]

使用环境:

  • Anaconda环境,Python版本3.8/3.11
  • 编译器:Apple clang version 15.0.0 (clang-1500.3.9.4)
    该编译操作在i9处理器MacBook上可正常运行。
解决方案
  • 设置macOS最低部署版本
    std::optional::value()是C++17特性,且要求macOS 10.13及以上版本支持。编译时需指定最低部署版本参数:

    • 直接在编译命令中添加:-mmacosx-version-min=10.13
    • 若使用CMake,在CMakeLists.txt中添加:
      set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "Minimum macOS version")
      
  • 确保Anaconda环境适配arm64架构
    M3芯片为arm64架构,需使用对应架构的Anaconda环境:

    1. 检查当前环境架构:运行conda info,查看platform字段是否为osx-arm64
    2. 若为x86_64环境,重新创建arm64环境:
      conda create -n arm_env python=3.11
      conda activate arm_env
      
  • 更新PyTorch到适配Apple Silicon的版本
    旧版本PyTorch对Apple Silicon支持不完善,更新至官方适配版本:

    conda install pytorch torchvision torchaudio -c pytorch
    
  • 临时替换value()调用(不推荐,仅当无法修改部署目标时使用)
    修改出错的头文件function_schema.h,将arg.default_value().value()替换为*arg.default_value(),利用std::optional的解引用操作符获取值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:12:34