You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Ghc以非默认配置调用链接器及更换链接器?

刚好我之前也折腾过GHC的链接器参数配置,这两个问题都有很直接的解决方案,给你详细说下:

向GHC传递链接器参数(对应cc的-Wl选项)

GHC里对应cc -Wl的选项是-optl,你只需要把每个要传给链接器的参数前面加上-optl前缀就行。

比如你用cc时的命令:

cc -Wl,-rpath -Wl,/usr/local/lib

对应到GHC里就是:

ghc -optl-rpath -optl/usr/local/lib

如果链接器参数包含空格或者需要作为一个整体传递,也可以用引号把参数包起来,比如:

ghc -optl'-rpath /usr/local/lib'

这样GHC就会把-rpath /usr/local/lib完整传给链接器,效果和cc的写法一致。

替换GHC默认使用的ld链接器

和cc的-B选项逻辑完全一样,GHC也支持-B参数来指定工具链的搜索目录,这样就能让GHC优先从你指定的目录里找链接器。

如果要把默认的/usr/bin/ld换成/usr/local/bin/ld,直接在GHC命令里加上-B/usr/local/bin就行:

ghc -B/usr/local/bin your-haskell-file.hs

这个选项会让GHC在/usr/local/bin目录下查找包括ld在内的工具链程序,自然就会用/usr/local/bin/ld替代默认的链接器了。

另外还有一种方式是通过-optl直接指定链接器,比如:

ghc -optl-fuse-ld=/usr/local/bin/ld your-haskell-file.hs

不过这种方式是直接给链接器传递-fuse-ld参数,而-B选项更贴近cc的用法,也更通用,推荐优先用-B。

内容的提问来源于stack exchange,提问作者Juan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:15:54