为什么GHC的Macports包需要这么长时间才能编译?

ham*_*ter 8 macos haskell macports ghc

为什么?有一个引导过程并编译真正的编译器进程,但哪个部分消耗的时间最多?

iva*_*anm 9

从Gentoo的角度来看:

在Gentoo中,一切都在编译.我们为GHC做的是我们开发人员(包括像我这样的非官方开发人员)从较旧版本编译GHC的新版本以创建二进制自举版本,然后将其打包并让用户使用该版本来编译新版本.

从内存中,编译二进制文件可能需要两倍多的时间(使用二进制文件在我的笔记本电脑上编译新版本大约需要45分钟).存在一些差异(文档是使用二进制文件构建和提供的,而不是每个用户自己构建它们)但是我没有看到任何可以解释如此大的时间差异的文档.用于构建二进制和最终用户的实际ebuild可以在这里找到(启用ghcbootstrap标志意味着它构建二进制文件,启用二进制标志意味着用户安装并使用预构建的二进制文件而不是自己构建GHC):http: //code.haskell.org/gentoo/gentoo-haskell/dev-lang/ghc/ghc-6.12.3.ebuild

因此,我的猜测是,如果Macports确实正在构建一个初始引导二进制文件,那么这是最初的引导过程需要很长时间(特别是如果它是从最后一个C-only版本开始并且自行引导到你实际想要的版本的话.安装).


小智 5

众所周知,构建 GHC 需要花费很长时间。我听说过关于从源代码构建需要超过 8 个小时的恐怖故事。据我了解,这主要是由于 GHC 的默认构建尝试进行大量优化以加快其自身的运行时性能。即使使用部分预构建的系统(我相信 macports 提供的),由于所有链接,此过程仍然可能需要一段时间。

编辑:请参阅以下内容 http://hackage.haskell.org/trac/ghc/wiki/Building/Using#HowtomakeGHCbuildquickly


nea*_*ith 2

某些构建过程需要相当长的时间,并且时间量在很大程度上取决于 CPU 的速度以及可用于构建的处理器时间。

如果您担心它可能会在某个时刻挂起,请使用install-v标志运行以获得与构建过程相关的更多描述性输出。该命令将类似于:

sudo port -v install [portfile]
Run Code Online (Sandbox Code Playgroud)