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

macOS M1(Monterey)下Nix安装Agda链接失败求助

在M1 macOS Monterey上用Nix安装Agda时链接阶段段错误的排查与解决

问题概述

在搭载Monterey系统的M1架构macOS设备上,执行nix-shell -p agda安装Agda时,编译过程正常完成,但链接阶段触发段错误,核心报错如下:

clang-11: error: linker command failed with exit code 139 (use -v to see invocation)
`cc' failed in phase `Linker'. (Exit code: 139)

完整构建日志显示链接器/nix/store/gwm9iadcyybh7gc4q6djvaz4fb40i90c-cctools-binutils-darwin-949.0.1/bin/ld触发了Segmentation fault: 11。此前安装其他Haskell包时,曾通过设置export C_INCLUDE_PATH="$(xcrun --show-sdk-path)/usr/include/ffi"解决GHC找不到libffi/zlib的问题,但本次报错原因不明。

可能原因

  • 架构兼容性问题:M1为arm64架构,部分旧版Nix工具链(如cctools-binutils)在arm64环境下存在bug,导致链接器崩溃
  • 依赖库架构不匹配:链接过程中调用的某些C依赖库可能是x86_64版本,与arm64的编译产物不兼容
  • Nixpkgs版本过旧:当前使用的Nixpkgs版本中,Agda 2.6.2.2的构建脚本未适配M1架构,或依赖的GHC版本对arm64支持不完善

排查步骤

  1. 确认Nix运行架构
    执行以下命令查看当前Nix的系统架构:

    nix-shell -p nix-info --run "nix-info -m"
    

    输出中的system字段应为aarch64-darwin,如果显示x86_64-darwin,说明当前在Rosetta兼容模式下运行。

  2. 获取详细链接日志
    重新构建Agda并输出详细链接命令,便于定位问题:

    nix-build -E 'with import <nixpkgs> {}; agda' -v 2>&1 | grep -A 20 "Linking"
    

    查看具体链接的库文件路径,后续可通过file命令验证库的架构。

  3. 检查依赖库架构
    以libffi为例,验证其是否为arm64版本:

    nix-shell -p libffi --run "file $(nix-build -A libffi)/lib/libffi.dylib"
    

    输出应包含arm64,如果显示x86_64则说明依赖库架构不匹配。

  4. 验证Nixpkgs分支兼容性
    尝试切换到Nixpkgs不稳定分支,该分支对M1的支持更完善:

    nix-shell -I nixpkgs=channel:nixpkgs-unstable -p agda
    

    如果安装成功,说明旧版本Nixpkgs存在适配问题。

解决方案建议

  • 升级到Nixpkgs不稳定分支:长期来看,使用unstable分支能获得更完善的M1架构支持,可执行以下命令切换默认分支:

    nix-channel --add https://nixos.org/channels/nixpkgs-unstable nixpkgs
    nix-channel --update
    

    之后再执行nix-shell -p agda尝试安装。

  • 指定适配M1的GHC版本:通过Haskell包集指定更适配arm64的GHC版本构建Agda:

    nix-shell -p "haskellPackages.ghcWithPackages (p: [p.agda])"
    
  • 补充链接阶段环境变量:尝试设置LIBRARY_PATH确保链接器能找到系统库:

    export LIBRARY_PATH="$(xcrun --show-sdk-path)/usr/lib"
    nix-shell -p agda
    
  • 临时使用Rosetta兼容模式:如果以上方法均无效,可切换到x86_64兼容环境安装:

    arch -x86_64 zsh
    nix-shell -p agda
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:35:19