【发布时间】:2012-02-18 13:31:59
【问题描述】:
标准库中System.Info 包中的“os”函数的可能值是什么?
另外:这些值是否可靠,是否可以在许多编译器中移植? Windows 上的 Hugs 会返回与 Windows 上的 ghc 相同的值吗?
有没有更好的嗅探操作系统的方法?
【问题讨论】:
-
codepad.org/x13GGGta(拥抱)ideone.com/9C4ER(ghc)
标准库中System.Info 包中的“os”函数的可能值是什么?
另外:这些值是否可靠,是否可以在许多编译器中移植? Windows 上的 Hugs 会返回与 Windows 上的 ghc 相同的值吗?
有没有更好的嗅探操作系统的方法?
【问题讨论】:
GHC 的变量取自“autotools”工具套件,该工具套件可生成众所周知的“配置”脚本,这些脚本几乎总是在编译时使用 (./configure; make; make install)。 configure 使用标准的“编译器标识字符串”,如用于 C 编译器的 x86_64-unknown-linux-gnu,并额外计算一组更详细的变量来标识主机平台。这些变量在生成的 GHC 的Makefile 中使用,这个文件进一步生成了你在Info.hs 文件中看到的ghcplatform.h 文件。
HUGS 使用几乎完全相同的过程来获取平台变量,只是头文件的名称不同(您可以在链接的源代码中看到)。
由于 Windows 上的 GHC 和 HUGS98 也是使用 MinGW 和 autotools 编译的,因此该平台上的变量是一致的。
【讨论】: