我使用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