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

我也遇到了这个问题。另一种解决方法是将库添加为 ARM 代码而不是 Thumb 代码,方法是将以下行添加到您的 makefile:

LOCAL_ARM_MODE := arm

使用 ARM 模式应该没有问题... ARM 指令需要两倍于 Thumb 指令的空间,但也更加复杂,并且能够在一条指令中完成更多任务,因此取决于编译器的聪明程度,生成的代码可能更大或更小以及更有效或更低效率,但应该以相同的结果执行。

于 2012-12-10T19:48:27.650 回答
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 回答
1

我在 android-ndk-r8b 中也有类似的错误。调用 ndk-build 并设置 NDK_DEBUG 标志时会发生这种情况:

ndk-build NDK_DEBUG=1 <--- 错误

尝试将 NDK_BUILD 标志设置为 0。它应该可以编译。当然它不会是可调试的:(

ndk-build NDK_DEBUG=0 <--- 没有错误

于 2012-10-13T00:55:02.373 回答