3

MacOSXLionにPyPy用のPygameバージョン1.9.1releaseをインストールしてみました。私はpypy config.py最初にで走りましたpypy setup.py install。通常のPythonで構成しようとしていることがわかったので、インストールプロセスに構成を追加しました(正しくインストールされますが、インポートエラーが発生します)。インストールプロセス中に、次のような多くの警告があります。

src/overlay.c:44:5: warning: implicit declaration of function 'PyObject_Free' is invalid in C99 [-Wimplicit-function-declaration]
PyObject_Free ((PyObject*)self);
^

しかし、2つの同様のエラーも発生しました。

    In file included from src/scale_mmx.c:33:
src/scale_mmx64.c:424:27: error: invalid instruction mnemonic 'movsxl'
        asm __volatile__( " /* MMX code for inner loop of X bilinear filter */ "
                          ^
<inline asm>:1:191: note: instantiated into assembly here
         /* MMX code for inner loop of X bilinear filter */  movl             -36(%rbp),      %ecx;            pxor          %mm0,      %mm0;           1:                                           movsxl         (%rdi), ...
                                                                                                                                                                                                     ^~~~~~
In file included from src/scale_mmx.c:33:
src/scale_mmx64.c:499:27: error: invalid instruction mnemonic 'movsxl'
        asm __volatile__( " /* MMX code for inner loop of X bilinear filter */ "
                          ^
<inline asm>:1:191: note: instantiated into assembly here
         /* MMX code for inner loop of X bilinear filter */  movl             -36(%rbp),      %ecx;            pxor          %mm0,      %mm0;           1:                                           movsxl         (%rdi), ...
                                                                                                                                                                                                     ^~~~~~
2 errors generated.

PyPyがCでブロックコメントのように見える行でスタックしたことは私にはかなりばかげているように思えます。そして、なぜそれがコメントをasmとvolatileにカプセル化したのかは私を超えています。しかし、これは私に提供されたコードであり、通常のPythonで機能します。それで、これはバグですか?それとも私は何かが足りないのですか?

4

1 に答える 1

2

PyPyには(良い理由または悪い理由で)CPythonとは異なるいくつかの#defineがあり、pygameは無効なCをコンパイルしようとする他の何か(暗黙の仮定でよく考えられていない#elseに基づいて)を使用することを選択する可能性があります。 、同じコードがCPythonでコンパイルされる/コンパイルされない理由と方法に従う必要があります。

于 2012-05-21T18:34:39.787 に答える