mca*_*dre 6 x86 haskell x86-64 ncurses ghc
我正在写一个多平台ncurses文本冒险游戏.所需的C库ncursesw是为x86配置的,但我的操作系统是Mac OS X 10.6.6 x86_64.
ghc --make -o rogue rogue.hs
[1 of 2] Compiling Dungeon ( Dungeon.hs, Dungeon.o )
[2 of 2] Compiling Main ( rogue.hs, rogue.o )
Linking rogue ...
ld: warning: in /usr/local/lib/libncursesw.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
Run Code Online (Sandbox Code Playgroud)
我认为强制编译x86比说服Homebrew,MinGW和Aptitude存储库包含x86_64 ncursesw库要容易得多.
是否有命令行选项我可以传递给ghc来指定架构,类似于-marchGCC?
看起来您的 ghc 配置为 32 位 ( i386),而 ncurses 库是 64 位 ( x86-64)。我相信最新的 Haskell 平台 (2011.2.xx) 使用 64 位 ghc,而早期版本提供 32 位 ghc。
如果您使用的是较早的 HP,升级到最新版本可能足以解决此问题。
不幸的是 ghc 不是本机交叉编译器,并且您无法通过标志设置体系结构或字大小。对于要使用的每个架构,您都需要一个单独的 ghc,并且还需要确保链接的所有库都与其匹配。
(顺便说一句,x86不足以区分架构,因为它可以指 32 位或 64 位。通常它指的是 32 位版本,但并非总是如此。至少在带有 XCode 3 的 OSX 10.6 上,gcc 将其视为无效值而拒绝为-三月)