M1 Mac运行Clash解释器出现lncurses链接错误的原因咨询
M1 Mac下Nix+Stack启动Clashi时
ld: library not found for -lncurses错误原因分析 问题场景
在M1 Mac设备上,使用如下Nix Shell配置安装Stack:
{ pkgs ? import <nixpkgs> { system = "x86_64-darwin"; } }: pkgs.mkShell { buildInputs = [ pkgs.stack # required for clashi pkgs.libiconv pkgs.libffi ]; }
执行命令stack exec --package clash-ghc -- clashi启动Clash解释器时,编译ghc-tcplugins-extra和hint包过程中出现链接错误:ld: library not found for -lncurses。
错误原因
- 架构不兼容:你的Nix配置强制指定了
x86_64-darwin架构,但M1 Mac属于aarch64-darwin(arm64)架构。跨架构编译时,链接器无法找到对应x86_64-darwin版本的ncurses库,同时系统默认的aarch64-darwin版本ncurses和x86_64编译环境不兼容,导致链接失败。 - 依赖缺失:当前Nix Shell的
buildInputs中未显式添加pkgs.ncurses包。Stack在编译依赖时,无法从Nix提供的隔离环境中获取到ncurses库,只能尝试调用系统库,但因架构不匹配无法成功。
内容的提问来源于stack exchange,提问作者CrepeGoat
相关产品推荐
相关产品推荐

