我一直在尝试编译syn64k --for在Executor中使用,以运行System's Twilight(我小时候玩的游戏)。我在我的 macbook pro(带有最新 Xcode 和命令行工具的 Lion 10.7.4)上执行此操作。我映射CC
到gcc -m32
解决我遇到的几个问题,但我得到了以下信息:
Making all in native/i386
make[2]: Nothing to be done for `all'.
outgoing=;\
gcc -m32 -maccumulate-outgoing-args -c -x c /dev/null 2> /dev/null && outgoing=-maccumulate-outgoing-args; \
gcc -m32 -S -O2 -fomit-frame-pointer -Wall -static -fno-defer-pop -Wno-unused\ -I./include -I./../include -I. -I../include $outgoing syn68k.c -o ./syn68k.s
syn68k.c: In function ‘s68k_handle_opcode_0x07A3’:
syn68k.c:52968: internal compiler error: in EmitLV_DECL, at llvm-convert.cpp:7475
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
make[2]: *** [syn68k.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1
我去了 URL,它看起来不像是一个真正发布关于 LLVM 的错误报告的地方。我的文件'syn68k.c'在预处理器完成后大约有50k行,所以我真的不认为我可以制作一个可重现的测试用例来显示错误。
原来这个问题已经在 github 项目上(这是唯一列出的问题,哈哈)。MaddTheSane 说发生这种情况是因为 clang 不支持全局寄存器变量(正如我在此处验证的那样)。
我对你输入后编译的工作原理只有基本的了解make
,所以有没有办法可以跳过 clang 或类似的东西?你有什么建议?