System.Info 中的“os”函数的可能值是多少?标准库中的包?
另外:这些值是否可靠,它们是否可以跨许多编译器移植? Windows 上的 Hugs 会返回与 Windows 上的 ghc 相同的值吗?
是否有更好的嗅探操作系统的方法?
最佳答案
GHC 的变量取自“autotools”工具套件,该工具套件生成众所周知的“configure”脚本,这些脚本几乎总是在编译某些东西时使用(./configure; make; make install
)。 configure
使用标准的“编译器标识字符串”,例如用于 C 编译器的 x86_64-unknown-linux-gnu
,并另外计算一组更详细的变量来标识主机平台。这些变量在 GHC 生成的 Makefile
中使用,该文件进一步生成您在 Info.hs
文件中看到的 ghcplatform.h
文件.
HUGS 使用几乎完全相同的过程来获取平台变量,除了头文件的命名不同(正如您可以在链接的源代码中看到的那样)。
由于 Windows 上的 GHC 和 HUGS98 也是使用 MinGW 和 autotools 编译的,因此变量在该平台上是一致的。
关于windows - Haskell 中 System.Info "os"函数的可能值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9341611/