如何有选择地将某些系统库静态地链接到Haskell程序二进制文件中? [英] How to selectively link certain system libraries statically into Haskell program binary?

查看:118
本文介绍了如何有选择地将某些系统库静态地链接到Haskell程序二进制文件中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在开发一些用Haskell编写的Web应用程序。所有的Haskell库都是静态链接的;尽管这会使可执行文件膨胀,但它并不是什么大问题,因为它将是服务器上运行的唯一Haskell程序。



然而,我也想摆脱对 libgmp.so 的依赖关系,即我想将多精度库静态链接到程序中,但保留所有其他系统库(如pbread,libc和libm)动态链接。



哪些链接器切换到ghc这样做?

编辑以解决一个侧面问题



是否可以禁用标准库的默认链接,默认情况下默认链接到每个Haskell程序中?像GCC相当于 -nostdlib

解决方案

dcoutts已发布这是作为一个reddit注释:


您可以使用ghc完全相同。



  gcc -c prog.c -o prog.o 
gcc prog.o libfoo.a -o prog
code>




和lo,与ghc是一样的...




  ghc -c prog.hs -o prog.o 
ghc prog.o libfoo.a -o prog


I'm currently developing some web application written in Haskell. All Haskell libraries are statically linked; although this "bloats" the executable, it not so much of a problem since it will be the only Haskell programm running on the server.

However, I'd also like to get rid on the dependency on libgmp.so, i.e. I would like to link the multiprecision library statically into the program as well, but keep all the other system libraries (such as pthread, libc, and libm) dynamically linked.

Which linker switches to ghc do that trick?

EDIT to account for a side question

Is it possible to disable default linkage of the standard libraries, that are pulled in by default into every Haskell programm? Something like the GCC-equivalent to -nostdlib?

解决方案

dcoutts posted this as a reddit comment:

You can do exactly the same with ghc.

gcc -c prog.c -o prog.o
gcc prog.o libfoo.a -o prog

and lo, with ghc it's the same...

ghc -c prog.hs -o prog.o
ghc prog.o libfoo.a -o prog 

这篇关于如何有选择地将某些系统库静态地链接到Haskell程序二进制文件中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆