2013-10-13 117 views
7

我的LLVM/opt-3.2和llvm-3.2.0.2一起安装,我刚从Ubuntu软件包安装GHC 7.6.2。然而,当我尝试编译GHC与-fllvm -V3,我得到的错误:在LLVM上使用GHC 3.2

*** CodeGen: 
*** LlVM CodeGen: 
Error (figuring out LLVM version): fd:10: hGetLine: end of file 

<no location info>: 
    Warning: Couldn't figure out LLVM version! 
      Make sure you have installed LLVM 
*** LLVM Optimiser: 
'opt-3.0' '/tmp/ghc17812_0/ghc17812_0.ll' '-o' '/tmp/ghc17812_0/ghc17812_0.bc' '-mem2reg' '--enable-tbaa=true' 
*** Deleting temp files: 
... 
ghc: could not execute: opt-3.0 

opt是在我的道路,但版本是3.2,而不是3.0。如果它不是让GHC寻找正确版本的opt的hackage llvm包,它是什么?

回答

5

似乎有两个相关的ghc-tracs:onetwo

在后一个trac中,用户提到了选项“-pgmlo”和“-pgmlc”,它们可以在here找到。

我能够通过在GHC选项列表中添加“-pgmlo opt -pgmlc llc”来解决我的问题。

作为替代方案,您可以编辑/usr/lib/ghc/settings,并确保它具有以下行:

("LLVM llc command", "llc"), 
("LLVM opt command", "opt") 

我还是想知道为什么GHC试图选择-3.0在默认情况下找到。

6

只想评论说,这仍然是一件事情。说明OSX:

> brew tap homebrew/dupes 
> brew install homebrew/versions/llvm34 

并保持一个别名我.bashrc

alias ghc-llvm="ghc -O2 -fllvm -pgmlo opt-3.4 -pgmlc llc-3.4" 

确保你llvm34llvm35。 我还发现你真的想通过-O2与LLVM。没有它是非常缓慢的。

+0

通过在你的.bashrc中添加一些东西,以及OS X的哪个版本,你的意思是什么? –

+1

通过运行ps找出你正在使用的shell,然后阅读该shell的手册页以了解它在启动时运行的脚本。对于大多数情况下,shell是bash,它运行$ HOME/.bashrc和其他几个可用于定制体验的脚本。 –

+0

谢谢。据我所知这是正确的,但我的实际问题是这样的:https://stackoverflow.com/questions/24796874/cant-install-diagrams-arithmoi-on-mac –