我目前正在开发一些用Haskell编写的Web应用程序。所有Haskell库都是静态链接的;虽然这会“膨胀”可执行文件,但它并不是一个问题,因为它将是服务器上运行的唯一Haskell程序。
但是,我还想摆脱对libgmp.so
的依赖,即我想将多精度库静态链接到程序中,但保留所有其他系统库(例如pthread) ,libc和libm)动态链接。
哪个链接器切换到ghc才能做到这一点?
是否可以禁用标准库的默认链接,默认情况下将其引入每个Haskell程序?类似GCC的东西 - 等同于-nostdlib
?
答案 0 :(得分:9)
dcoutts将此贴为reddit评论:
您可以使用ghc完全相同。
gcc -c prog.c -o prog.o
gcc prog.o libfoo.a -o prog
和lo,与ghc相同......
ghc -c prog.hs -o prog.o
ghc prog.o libfoo.a -o prog
答案 1 :(得分:6)
您可以使用-optl
将选项直接传递给链接器,因此要静态链接所有内容,您可以使用:
ghc --make Main.hs -optl-static -optl-pthread
或者如果你使用的是Cabal,请将它们放在GHC-Options
中。
您可以进一步调整此内容,以便对静态或动态链接的内容进行更精细的控制。 -v
(详细)选项有助于查看最终的链接器命令。