使用lli(JIT)运行字节码llvm(.bc)时出现问题

时间:2019-01-23 19:00:26

标签: haskell llvm

我使用GHC在.ll文件中编译了我的haskell源。然后,我使用.bc命令生成了几个llvm-as(字节码)。

此后,我使用.bc命令将所有内容链接到一个llvm-link中。然后使用opt命令进行优化。

最终结果是尝试使用lli命令(JIT)执行,但是发生了以下错误:

  在模块中找不到

'main'函数。

有人知道该怎么做吗?

好。我在做什么?我正在尝试在NixOS上编译一个yesod项目。

我首先使用:

$ stack --nix-packages llvm_39 build --ghc-options = "-fllvm -keep-llvm-files"

这生成了与源相对应的.ll。所以我得到了.ll并复制到另一个目录中。接下来,我使用llvm-as来编译每个字节的字节码:

$ llvm-as <filename>

然后我将所有内容放到一个文件中。我在yesod项目中拥有的是如何知道的:主要知识:

import Prelude (IO)
import Application (appMain)

main :: IO ()
main = appMain

我认为在将所有内容放到.bc中之后,我可以使用lli运行,因为生成.exe时可以这样做。使用yesod,.exe,config文件夹和静态文件夹都位于同一位置并且隐藏!

yesod项目是使用postgre模板生成的,我什至尚未对其进行编程。我正在测试构建。

及时。

文件:

Application.ll
Common.ll
Foundation.ll
Import.ll
Model.ll
Paths_TesteYesod.ll
Settings.ll
Comment.ll
DevelMain.ll
Home.ll
main.ll
NoFoundation.ll
Profile.ll
StaticFiles.ll

我全部使用llvm-link来获取TestYesod.bc

0 个答案:

没有答案