为什么?有一个引导过程并编译真正的编译器进程,但哪个部分消耗的时间最多?
答案 0 :(得分:9)
从Gentoo的角度来看:
在Gentoo中,所有内容都已编译完成。我们为GHC做的是我们开发人员(包括像我这样的非官方开发人员)从较旧版本编译GHC的新版本以创建二进制自举版本,然后将其打包并让用户使用该版本来编译新版本。
从内存中,编译二进制文件可能需要两倍多的时间(使用二进制文件在我的笔记本电脑上编译新版本大约需要45分钟)。存在一些差异(文档是使用二进制文件构建和提供的,而不是每个用户自己构建它们)但是我没有看到任何可以解释如此大的时间差异的文档。可以在此处找到用于构建二进制和最终用户的实际ebuild(启用ghcbootstrap标志意味着它构建二进制文件,启用二进制标志意味着用户安装并使用预构建的二进制文件而不是自己构建GHC):{{ 3}}
因此,我的猜测是,如果Macports确实正在构建一个初始引导二进制文件,那么这是最初的引导过程需要很长时间(特别是如果它是从最后一个C-only版本开始并自行引导到你的版本实际上想安装)。
答案 1 :(得分:4)
建立GHC因永远消失而臭名昭着。我听说过关于它从源头构建花费超过8小时的恐怖故事。据我所知,这主要是因为GHC的默认构建尝试进行大量优化以加速其自身的运行时性能。即使使用部分预建系统(我相信macports提供的系统),由于所有链接,这个过程仍然需要一段时间。
编辑:请参阅以下内容 http://hackage.haskell.org/trac/ghc/wiki/Building/Using#HowtomakeGHCbuildquickly
答案 2 :(得分:3)
可能需要一段时间。当我以前在我的iBook G4上编译它时,花了长达7个小时。即使在具有大量RAM和快速处理器的MacBook Pro上,也可能需要2-3个小时。
答案 3 :(得分:2)
某些构建过程需要相当长的时间,而且时间长短在很大程度上取决于CPU的速度以及可以为构建投入多少处理器时间。
如果您担心它可能会挂在某一点,请使用install
标志运行-v
以获得与构建过程相关的更具描述性的输出。因此命令就像:
sudo port -v install [portfile]