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

OS X El Capitan下cabal install parsec报错C Compiler阶段失败求助

解决OS X El Capitan上Cabal安装Parsec时的-no-pie编译错误

我之前在OS X El Capitan 10.11.6上碰到过一模一样的问题!这个报错的根源很明确:Cabal给C编译器传递了-no-pie参数,但你系统里的gcc其实是Apple Clang的伪装(从你的版本信息能看到,实际是Apple LLVM version 7.0.0),而这个版本的Clang并不支持-no-pie这个选项,所以编译直接失败了。

下面给你几个可行的解决办法:

1. 临时应急:指定编译参数安装Parsec

直接在安装命令里覆盖GHC的编译参数,用Clang支持的选项替代-no-pie:

cabal install parsec --ghc-options="-optc-fno-pie -optl-fno-pie"

这里-optc是给C编译器传递参数,-optl是给链接器传递参数,-fno-pie是Clang能识别的等价选项,这样就能绕过错误了。

2. 永久修复:修改Cabal全局配置

如果不想每次安装都加参数,可以修改Cabal的全局配置文件,让所有编译都使用兼容的参数:

  1. 打开~/.cabal/config文件(如果没有就先执行cabal update生成)
  2. 找到ghc-options:这一行(如果不存在就自己添加)
  3. 在后面加上-optc-fno-pie -optl-fno-pie,最终类似这样:
    ghc-options: -optc-fno-pie -optl-fno-pie
    
  4. 保存文件后,以后用Cabal安装任何包都不会再碰到这个问题。

3. 升级Cabal(推荐方案)

旧版本的Cabal对El Capitan的Clang兼容性不佳,升级到较新的Cabal版本通常能直接解决这类参数不兼容问题:

cabal update
cabal install cabal-install

升级完成后,再执行cabal install parsec应该就能正常完成安装了。

至于为什么Stack能正常安装Parsec?因为Stack会独立管理自己的GHC工具链和编译配置,它默认的参数已经适配了旧版OS X的Clang,不会传递不兼容的-no-pie选项,所以没出现报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:18:09