我有一個簡單的程序,似乎根本沒有使用libgmp。Haskell GHC創建不依賴GMP的可執行文件?
-- Sample.hs
main = putStrLn "hi"
如果我在Linux上使用
的默認選項編譯$ 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...)
有一些標誌,我可以傳遞給GHC告訴它不產生取決於libgmp.so
庫的可執行文件。我不想靜態鏈接libgmp,理想情況下,我想配置GHC不發出依賴於該庫的代碼。如果我嘗試使用Integer
或類似的東西,我可以減少某些功能,如錯誤。
如果你擔心LGPL許可證注意,所有你需要做的符合該是A:不發貨或B的二進制文件(運行Web服務器的如常見的情況):只要出貨目標代碼與二進制文件一起, ;爲了遵守LGPL,您需要做的只是讓人們鏈接LGPL庫的不同兼容版本。 – Cubic