私はHaskellのLLVMバインディングを使用して、非常に単純な「hello world」スタンドアロンアプリケーションを作成しようとしています。アイデアは、私がHaskellアプリケーションを実行すると、実行可能なバイトコードを吐き出し、 "hello world!"という出力を出すということです。Haskellでllvmバインディングを使用しているときに 'main'関数がモジュールに見つかりません
'main' function not found in module.
私は明示的にcreateNamedFunction
を使用してmain
機能を作成しています:私はこれを実行すると
-- hellofunc prints out "hello world"
hellofunc :: CodeGenModule (Function (IO()))
_main :: (Function (IO())) -> CodeGenModule (Function (IO()))
_main func = createNamedFunction ExternalLinkage "main" $ do
call func
ret()
main = writeCodeGenModule "hello.bc" (liftA _main hellofunc)
は、私は次のエラーを参照してください。私は何が欠けていますか?
「llvm-dis hello.bc」を試して、 '@ main'に何が間違っているのか調べることができます。 – arrowd
_fun2として書き込まれます。 'createNamedFunction'を間違って使用しているのか、その関数にバグがあるのかを理解しようとしています。 –
Btw。 "_main"のようなアンダースコアで始まる識別子は未使用の識別子をマークします。 GHCは使用しないと警告しません。したがって、実際には使用されていない場合には、マークだけが未使用として機能します。以下も参照してください:https://ghc.haskell.org/trac/ghc/ticket/4959 – Lemming