运行Haskell代码提示无法识别LLVM版本、找不到opt命令如何解决
LLVM说明
LLVM是一套开源的模块化编译器工具链,GHC(Haskell官方编译器)在部分硬件架构下编译代码时,需要调用LLVM的opt等工具完成代码优化与目标代码生成,你遇到的报错就是GHC找不到符合版本要求的LLVM组件导致的。
报错根因
你收到的报错信息如下:
: error:
Warning: Couldn't figure out LLVM version!
Make sure you have installed LLVM between [9 and 13)
ghc: could not execute: opt
该报错明确两个信息:
- 你当前使用的GHC版本要求LLVM版本范围为 大于等于9.0,小于13.0
- 系统环境中没有安装对应版本的LLVM,或LLVM的可执行文件路径未加入环境变量,导致GHC无法找到
opt命令
各系统安装符合要求版本LLVM的方法
我们统一安装LLVM 12版本,完全符合GHC的版本要求:
Windows系统
- 若使用Chocolatey包管理器,直接执行命令:
choco install llvm --version=12.0.1 - 手动安装可以直接下载LLVM 12.x版本的官方安装包,安装完成后将LLVM安装目录下的bin文件夹路径添加到系统环境变量PATH,重启终端后生效。
macOS系统
- 若使用Homebrew包管理器,执行安装命令:
brew install llvm@12 - 安装完成后执行以下命令将LLVM 12加入终端环境变量:
如果你使用bash作为默认终端,将上述命令中的echo 'export PATH="/usr/local/opt/llvm@12/bin:$PATH"' >> ~/.zshrc source ~/.zshrc.zshrc替换为.bash_profile即可。
Linux(Debian/Ubuntu 系列)
- 执行安装命令:
sudo apt update && sudo apt install llvm-12 opt-12 llc-12 - 建立软连接让GHC可以直接识别到对应命令:
sudo ln -s /usr/bin/opt-12 /usr/local/bin/opt sudo ln -s /usr/bin/llc-12 /usr/local/bin/llc
安装验证
终端执行命令:opt --version,如果输出的版本号在9.0到13.0区间内,即说明安装配置成功,此时重新运行Haskell代码即可正常编译。
内容的提问来源于stack exchange,提问作者Rudolf Vrbensky
相关产品推荐
相关产品推荐

