私はlibgmpをまったく使用していない単純なプログラムを持っています。私は、LinuxHaskell GHCはGMPに依存しない実行ファイルを作成しますか?
にデフォルトのオプションを使用して、それをコンパイルした場合-- Sample.hs
main = putStrLn "hi"
は
$ ghc Sample.hs
これはSample
と呼ばれる実行可能ファイルを生成します。私は、任意の精度整数を使用しない単純なプログラムによって必要とされたライブラリを見たいと思っていました。
$ ldd Sample | sed -e 's/[(].*[)]/(0x000...)/'
linux-vdso.so.1 (0x000...)
libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x000...)
libm.so.6 => /lib64/libm.so.6 (0x000...)
librt.so.1 => /lib64/librt.so.1 (0x000...)
libdl.so.2 => /lib64/libdl.so.2 (0x000...)
libc.so.6 => /lib64/libc.so.6 (0x000...)
/lib64/ld-linux-x86-64.so.2 (0x000...)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000...)
私はlibgmp.so
ライブラリに依存する実行可能ファイルを生成しないことを伝えるためにGHCに渡すことができますいくつかのフラグがあります。私は静的にlibgmpをリンクしたくはありません。理想的には、GHCがそのライブラリに依存するコードを出力しないように設定したいのです。 Integer
などを使用しようとするとエラーなどの機能が低下しても問題ありません。
LGPLのライセンスノートが気になる場合は、それに準拠するために必要なのはA:バイナリを出荷しないことです(Webサーバーを実行する一般的なケースなど)。B:バイナリと共にオブジェクトコードを送ってください; LGPLに準拠するために必要なのは、人々が異なる互換性のあるバージョンのLGPLライブラリにリンクできるようにすることだけです。 – Cubic