首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么GHC需要这么长时间才能链接?

为什么GHC需要这么长时间才能链接?
EN

Stack Overflow用户
提问于 2011-08-05 14:40:12
回答 3查看 3.7K关注 0票数 20
代码语言:javascript
复制
>cabal update
>cabal install cabal-install
.......
[43 of 44] Compiling Distribution.Client.Install ( Distribution/Client/Install.hs, dist/build/cabal/cabal-tmp/Distribution/Client/Install.o )
[44 of 44] Compiling Main             ( Main.hs, dist/build/cabal/cabal-tmp/Main.o )
Linking dist/build/cabal/cabal ..

然后,我会等待很长一段时间,让它完成链接。

真心的!

EN

回答 3

Stack Overflow用户

发布于 2011-08-05 15:16:07

很可能是链接器本身。众所周知,来自binutils的标准ld速度很慢。如果您想加快速度(并在边缘生活一点),请尝试安装Gold linker。在Ubuntu (我假设是Debian)上,这将是:

代码语言:javascript
复制
sudo apt-get install binutils-gold

我已经在我的家庭系统上使用了一段时间了,还没有问题。

票数 12
EN

Stack Overflow用户

发布于 2013-04-19 21:24:06

这应该是一个注释,但我不能在注释中这样格式化代码:

我设法使用gold作为GHC使用的链接器,通过安装binutils-gold (按照Michael Snoyman的回答中的建议),然后用以下脚本替换符号链接/usr/bin/ld (使用chmod +x使其可执行),从而绕过了标准的ghc- with -gold错误:

代码语言:javascript
复制
#!/usr/bin/env python2

import sys
import os
import subprocess


tofilter = [
    "--hash-size",
    "--reduce-memory-overheads",
]

filtered = [ a for a in sys.argv if not any(a.startswith(p) for p in tofilter) ]
filtered[0] = "/usr/bin/ld.gold"

subprocess.check_call(subprocess.list2cmdline(filtered))

请注意,尝试使用ghc -pgml /usr/bin/ld.goldghc -pgml /usr/bin/ld.whateverElse设置链接器是不够的,因为-pgml的参数需要替换GCC,而不是LD。GHC调用了GCC,而后者又调用了/usr/bin/ld;这就是上面的脚本工作的原因。

票数 7
EN

Stack Overflow用户

发布于 2011-08-08 20:33:10

默认情况下,GHC将创建一个独立库/可执行文件(静态链接)。

现在已经支持动态链接一段时间了,所以你可以试着打开它。有了更少的工作要做,链接器可能会更快。另一方面,您需要确保在执行时您所依赖的动态库是可用的(Linux上的LD_LIBRARY_PATH变量)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6952396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档