我的里面有以下内容makefile https://github.com/bsl/GLFW-b/blob/master/Makefile:
GLFW_FLAG := -m32 -O2 -Iglfw/include -Iglfw/lib -Iglfw/lib/cocoa $(CFLAGS)
...
$(BUILD_DIR)/%.o : %.c
$(CC) -c $(GLFW_FLAG) $< -o $@
$(BUILD_DIR)/%.o : %.m
$(CC) -c $(GLFW_FLAG) $< -o $@
The -m32
指示 GCC 生成 32 位代码。它之所以存在,是因为在某些配置上 GHC 设置为构建 32 位代码,但 GCC 的默认值有时是 64 位。我想概括这一点,以便它自动检测 GHC 正在构建 32 位还是 64 位代码,然后将正确的标志传递给 GCC。
Question:我如何询问 GHC 将构建什么类型的代码(32 位与 64 位)?
PS:我的 cabal 文件在构建期间调用此 makefile 以解决 cabal 中的限制。我确实希望我能在我的 cabal 文件中将这些列为 c 源代码。
我看到的常见技巧是询问一个字节或位的大小Int
or Word
,因为这在 GHC 中根据机器的字大小而变化,
Prelude> :m + Foreign
Prelude Foreign> sizeOf (undefined :: Int)
8
Prelude Foreign> bitSize (undefined :: Int)
64
或者使用系统工具:
$ cat A.hs
main = print ()
$ ghc --make A.hs
[1 of 1] Compiling Main ( A.hs, A.o )
Linking A ...
$ file A
A: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.27, not stripped
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)