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

M1芯片MacBook安装Shark-ML失败的问题排查求助

问题原因及解决方法

核心原因

你判断的没错,问题根源就是编译Shark-ML时默认使用的C标准低于C14。Boost 1.82.0的Math组件明确要求C14及以上版本,而MPL(模板元编程库)的boost::mpl::list等结构在低标准下会出现未定义的情况,这直接导致了编译断言失败。另外,你在M1 Mac上用arch -x86_64转译安装的Boost,和默认arm64环境的编译链可能存在隐性兼容问题,但核心矛盾还是C标准不达标。

解决步骤

方法1:CMake时强制指定C++14标准

清空之前的编译缓存,重新执行CMake并显式指定C++标准:

cd Shark/build
rm -rf ./* # 清除旧的CMake生成文件
cmake ../ -DCMAKE_CXX_STANDARD=14 -DCMAKE_CXX_STANDARD_REQUIRED=ON
make
  • CMAKE_CXX_STANDARD=14:强制编译器使用C++14标准
  • CMAKE_CXX_STANDARD_REQUIRED=ON:确保编译器严格遵循该标准,拒绝 fallback 到更低版本

方法2:修改Shark-ML的CMake配置文件(方法1失效时用)

如果CMake自动检测仍未生效,直接修改仓库根目录的CMakeLists.txt,在文件开头添加以下配置:

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) # 禁用编译器扩展,避免标准兼容问题

保存后重新执行cmake ../和make即可。

额外适配M1 Mac的注意事项

因为你用的是x86_64架构的Boost,建议全程在x86_64转译环境下编译:

  1. 先执行arch -x86_64 zsh切换到x86_64 shell
  2. 重新进入Shark的build目录执行上述CMake和make命令
  3. 若CMake仍无法正确识别Boost,可显式指定Boost安装路径:
    cmake ../ -DCMAKE_CXX_STANDARD=14 -DBOOST_ROOT=$(brew --prefix boost)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 20:50:04