2010-12-05 10 views
6

DLLを必要としないように(Haskell)プログラムをコンパイルするにはどうすればよいですか?DLLを必要としないようにプログラムを構築する方法

GLUTを使用し、glut32.dllが必要なプログラムを作成しました。私はghc --make program.hsでそれを集めました。今は自分のプログラムを配布したいのですが、DLLを必要としないようにしています(つまり、ユーザーに.exeを与えるだけです)。私はghc -static --make program.hsでコンパイルしようとしましたが動作しませんでしたが、私はまだ "ユーザエラー(不明なGLUTエントリglutInit)"を取得します。

どうすればいいですか?

+0

参照http://stackoverflow.com/questions/5953199/create-a-static-haskell-linux-executable –

答えて

3

これは、GLUTがライブラリの静的バージョンを提供している場合にのみ可能です(これはglut32s.libのように指定できますが、特に何も呼び出さないという要件はありません)。

このアプローチの成功は、GHCが外部スタティックライブラリとのリンクを許可するかどうかによっても変わります。 ghcのmanページは、-staticがHaskellライブラリにのみ適用され、他の外部ライブラリには適用されないことを示しています。あなたが必要なCライブラリの静的バージョンを持っていると仮定すると

2

、あなたが実行可能な静的ハスケルを作成することができます。

Cツールチェーンを経由して、両方のHaskellの部品を確保し、かつCコンポーネントは静的にリンクされます
ghc -O2 --make -static -optc-static -optl-static A.hs -fvia-C 

関連する問題