Ubuntu安装Haskell Platform后ghc开启profiling编译报错找不到Prelude模块
报错原因
Ubuntu官方源的haskell-platform默认不会安装核心库的性能分析(profiling)版本,你遇到的报错就是因为缺失base等核心库的profiling编译产物,属于源安装方式的正常情况。
现有安装的修复方案
不需要卸载当前版本,直接安装对应依赖即可解决:
- 执行命令安装核心库的profiling包:
sudo apt update sudo apt install ghc-prof libghc-base-prof
- 如果后续编译时仍提示缺失其他包的profiling库,按照提示的包名安装对应系统包即可,格式为
libghc-<包名>-prof,比如提示缺text包的profiling版本就执行sudo apt install libghc-text-prof。 - 依赖安装完成后重新执行
ghc -O2 -prof myCode.hs即可正常编译。
关于是否更换安装渠道
如果只是临时使用Haskell,当前源安装的版本能满足需求可以不用更换。如果是长期学习或开发,更建议卸载当前系统版本后使用GHCup或Stack安装:
- Ubuntu源的Haskell组件更新速度极慢,你当前使用的GHC 8.6.5是已经停止维护的旧版本,很多新特性、新的第三方库都不支持
- 源内的Haskell依赖包版本固定,依赖冲突问题频发,安装第三方库的profiling版本需要手动查找对应系统包,使用成本很高
- GHCup是目前Haskell官方推荐的个人开发安装工具,支持自由切换不同版本的GHC、cabal等组件,所有组件的profiling库可以一键安装,不会污染系统路径
- Stack采用项目级的版本锁定机制,每个项目可以使用独立的GHC版本和依赖集,不会出现依赖冲突,新手上手门槛更低
如果需要更换安装渠道,先执行sudo apt purge haskell-platform ghc* libghc-*卸载当前系统内的所有Haskell组件,避免后续出现路径冲突。
不同安装渠道的差异
- 系统源安装:所有组件全局公用,版本固定,安装简单,灵活性极差,适合临时测试使用
- GHCup安装:组件均存放于用户家目录下,支持多版本自由切换,不会污染系统路径,适合个人日常开发使用
- Stack安装:依赖和GHC版本与项目绑定,适合多项目并行开发、多人协作场景使用
内容的提问来源于stack exchange,提问作者impresso
相关产品推荐
相关产品推荐

