1

C++ コードからリソースをロードしたい。そして、この方法を繰り返してみてください。しかし、ビルドしようとすると、次のようになります。

E:\Android\Samples\android-ndk-assets\project>e:\Android\android-ndk-r8b\ndk-build
Gdbserver      : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
"Compile thumb : png <= pngrtran.c
jni/libpng/pngrtran.c: In function 'png_do_expand':
jni/libpng/pngrtran.c:3790:1: internal compiler error: in reload, at reload1.c:1061
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make: *** [obj/local/armeabi/objs-debug/png/pngrtran.o] Error 1
4

3 に答える 3

3

私もこの問題に遭遇しました。もう 1 つの回避策は、次の行を makefile に追加して、ライブラリを Thumb コードではなく ARM コードとしてビルドすることです。

LOCAL_ARM_MODE := arm

ARM モードを使用しても問題はないはずです... ARM 命令は Thumb 命令の 2 倍のスペースを必要としますが、はるかに洗練されており、単一の命令でより多くのことを実行できるため、コンパイラの巧妙さによっては、結果のコードがより大きくまたはより小さく、より効率的またはより効率的ではありませんが、同じ結果で実行する必要があります。

于 2012-12-10T19:48:27.650 に答える
1

android-ndk-r8b にも同様のエラーがあります。NDK_DEBUG フラグを設定して ndk-build を呼び出すと発生します。

ndk-build NDK_DEBUG=1 <--- エラー

NDK_BUILD フラグを 0 に設定してみてください。コンパイルされるはずです。もちろん、デバッグ可能ではありません:(

ndk-build NDK_DEBUG=0 <--- エラーなし

于 2012-10-13T00:55:02.373 に答える
1

android-ndk-r8b でも同じエラーが発生しました。GCCのバグのようです。すでにバグレポートを提出していますか?

エラーを起こすコードを見つけました:

 if (*(sp - 5) == red_high &&
      *(sp - 4) == red_low &&
      *(sp - 3) == green_high &&  //this line make error
      *(sp - 2) == green_low &&   //this line make error
      *(sp - 1) == blue_high &&
      *(sp    ) == blue_low)
   {
      *dp-- = 0;
      *dp-- = 0;
   }
于 2012-09-02T09:51:05.520 に答える