Проблема при запуске байт-кода llvm (.bc) с lli (JIT) - PullRequest
0 голосов
/ 23 января 2019

Я скомпилировал исходники из haskell в .ll файлы с GHC.Затем я сгенерировал несколько .bc (байт-код), используя команду llvm-as.

После этого я связал все в один .bc, используя команду llvm-link.Затем оптимизируется с помощью команды opt.

Конечный результат пытался выполнить с помощью команды lli (JIT), но произошла следующая ошибка:

функция 'main' не найденав модуле.

Кто-нибудь знает, как это сделать?

Хорошо.Что я делаю?Я пытаюсь скомпилировать проект yesod в NixOS.

Сначала я использовал:

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

Это сгенерировало .ll, соответствующее источникам.Я получил эти .ll и скопировал в другой каталог.Затем я использовал llvm-as для компиляции, чтобы bytecod каждый из них:

$ llvm-as <filename>

Затем я собрал все это в один файл.Что у меня есть в проекте yesod, так это то, как вы знаете: main:

import Prelude (IO)
import Application (appMain)

main :: IO ()
main = appMain

Я подумал, что после того, как собрать все вместе в .bc, я смогу запустить с lli, как это возможно, когда.exe генерируется.С yesod только .exe, папка config и статическая папка в одном месте и cabum!

Проект 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...