0

私はsyn64kをコンパイルしようとしていました-Executorで使用するために、 System's Twilight(子供の頃にプレイしたゲーム)を実行します。私は自分のmacbookpro(最新のXcodeとコマンドラインツールを備えたlion 10.7.4)でこれを行っています。私が抱えていたいくつかの問題を修正するためにマップCCgcc -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'は、プリプロセッサが処理されてから約5万行長いので、バグを示すために再現可能なテストケースを作成することはできません。

この問題はすでにgithubプロジェクトにあります(リストされている唯一の問題です、ha)。MaddTheSaneは、clangがグローバルレジスタ変数をサポートしていないためにこれが発生すると言います(ここで確認したように)。

入力後にコンパイルがどのように機能するかについての基本的な理解以上のものはありませんmake。それで、clangなどをスキップする方法はありますか?何を指示してるんですか?

4

3 に答える 3

2

残念ながら、このプログラムをコンパイルするには、llvm-gccではなくgccを使用する必要があります。llvm-gccのLLVMバックエンドは、グローバルレジスタ変数をサポートしていません。同じ理由で、clangに切り替えると、グローバルレジスタ変数がチョークされるため、役に立ちません。

于 2012-07-06T13:08:53.580 に答える
0

llvmを使用するために必要でない場合は、clangのビルドをスキップできます。

llvmは、構成とmakefileの生成にcmakeを使用します。.cmakeファイルを変更して、作成したくないモジュールを無効にする構成を作成できます。

于 2012-07-05T17:24:10.600 に答える
0

http://developer.apple.com/bugreporterは、たとえそれがそのように見えなくても、Appleによって配布されたコンパイラに対してバグを報告するのに間違いなく適切な場所です。とはいえ、clang以外のものに対してバグレポートを提出する意味はありません。(ところで、テストケースのサイズは実際には重要ではありません。)

ソースコードをハックするのに十分なCがわからない場合は、macportsなどから新しいバージョンのgccを入手する価値があるかもしれません。

于 2012-07-06T08:52:53.247 に答える