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

Cabal v2-build出现x86_64架构符号未定义问题,求解决方案

问题解决方法

你的核心问题是系统更新后brew升级了icu4c到71.1版本,但项目依赖的text-c库是基于旧版icu4c 70编译的,导致版本不匹配引发链接错误。以下是具体解决步骤:

1. 清除旧缓存并重新编译依赖

Cabal缓存中的text-c库是用旧版icu4c编译的,直接删除缓存让它基于当前icu4c重新构建:

  • 删除对应版本的缓存文件:
    rm -rf ~/.cabal/store/ghc-8.10.7/lib/libHStxt-c-0.7.1.0-*
    
  • 用可重定位模式重新构建项目:
    cabal v2-build --enable-relocatable
    
    --enable-relocatable参数会让生成的库使用相对路径,避免绑定到特定版本的系统库路径。

2. 临时降级icu4c到70版本

如果重新编译依赖无效,可以临时切换回旧版icu4c:

  • 安装icu4c 70版本:
    brew install icu4c@70
    
  • 切换到该版本:
    brew link icu4c@70 --force --overwrite
    
  • 完成项目构建后,若需要切回新版icu4c,执行:
    brew unlink icu4c@70 && brew link icu4c
    

3. 在项目配置中指定当前icu4c路径

无需降级,直接告诉Cabal当前icu4c的位置:

  • 在项目根目录新建/编辑cabal.project文件,添加:
    package text-c
      extra-lib-dirs: /usr/local/opt/icu4c/lib
      extra-include-dirs: /usr/local/opt/icu4c/include
    
  • 重新构建项目:
    cabal v2-build
    

4. 升级text-c到兼容新版icu4c的版本

检查text-c的最新版本是否支持icu4c 71.1,若当前使用的版本过旧:

  • 修改项目.cabal文件中的依赖约束,例如:
    build-depends: text-c >= 0.7.2.0
    
  • 更新依赖并重新构建:
    cabal v2-update
    cabal v2-build
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:15:28