从 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 的版本开始引导到您实际想要安装的版本),那么我的猜测是初始引导过程需要这么长时间。
构建GHC以花费很长时间而闻名。我听说过它从源代码构建需要超过8个小时的恐怖故事。据我所知,这主要是因为GHC的默认构建尝试进行大量的优化,以加快其自身运行时性能。即使使用部分预构建系统(这是我认为macports提供的),由于所有链接,这个过程仍然需要一段时间。编辑:请参见以下链接。
一些构建过程需要相当长的时间,所需的时间取决于您的CPU速度以及可以用于构建的处理器时间。如果您担心它可能卡在某个点上,请使用-v标志运行install以获取与构建过程相关的更多描述性输出。因此,命令将类似于:sudo port -v install [portfile]