【发布时间】:2013-05-22 01:56:24
【问题描述】:
在 Windows 上,GHC 与 gcc 和 g++ 一起分发,例如在ghc-7.6.3\mingw\bin 下。从download page 中,还注意到在 windows 二进制下载下,Windows 的构建“还包括对编译 C++ 文件的支持。”
我可以想象分发这些编译器只是为了方便,因为 Windows 没有附带任何编译器。我也可以想象使用 FFI 是必要的,但我不能 100% 确定。例如,虽然 GHC 会使用它自己的 gcc/g++ 编译器来编译 .c 和 .cpp 文件,但 GHC 也可以provides options 选择您想要的任何编译器和链接器。事实上,你可以指定你自己的 gcc/g++ 并且它似乎工作。您甚至可以通过提前编译 .c/.cpp 文件将 GHC 进一步从循环中移除,并且只调用 GHC 来编译 Haskell 代码并使用 -pgml 将其全部链接(尽管整体效果与使用-pgmc 和-pgml)。
现在 似乎 可以工作了,但是你指定 -pgml 和 -pgmc 是与 GHC 所想的兼容的 gcc 版本是否完全依赖于运气?换句话说,当我使用 FFI 时,我真的只应该编译和链接所有与 GHC 调用的东西吗?
【问题讨论】:
-
对所有事情都使用 GHC 通常是最简单的方法。而且(我可能记错了)如果我没记错的话,如果您尝试使用 MSVC,事情就不会很好地工作(而且我模糊地记得 Cygwin 也有问题)。