在 Windows 上,GHC 与 gcc 和 g++ 一起分发,例如在ghc-7.6.3\mingw\bin
. 从下载页面,在 windows 二进制下载下还注意到,Windows 的构建“还包括对编译 C++ 文件的支持”。
我可以想象分发这些编译器只是为了方便,因为 Windows 没有附带任何编译器。我也可以想象使用 FFI 是必要的,但我不是 100% 确定。例如,虽然 GHC 将使用它自己的 gcc/g++ 编译器来编译 .c 和 .cpp 文件,但 GHC 还提供了选择您想要的任何编译器和链接器的选项。事实上,你可以指定你自己的 gcc/g++ 并且它似乎工作。您甚至可以通过提前编译 .c/.cpp 文件将 GHC 进一步从循环中移除,并且只调用 GHC 来编译 Haskell 代码并将其全部链接使用-pgml
(尽管整体效果与使用-pgmc
and相同-pgml
) .
现在这似乎可行,但它是否依赖于您指定的纯运气-pgml
并-pgmc
成为与 GHC 所想的兼容的 gcc 版本?换句话说,当我使用 FFI 时,我真的只应该用 GHC 调用编译和链接所有内容吗?