我有一个简单的程序,似乎根本没有使用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