在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
和 -pgml
)。
现在 似乎 工作,但它依赖于你指定的纯粹运气 -pgml
和 -pgmc
是一个与GHC的想法兼容的gcc版本?换句话说,当我使用FFI时,我真的只应该用GHC调用来编译和链接所有内容吗?