构建android-ndk-assets时出错

时间:2012-08-16 04:47:32

标签: android-ndk

我想从c ++代码加载资源。并尝试重复this way。但是当我尝试构建它时,我得到:

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

3 个答案:

答案 0 :(得分:3)

我也遇到了这个问题。另一种解决方法是通过在makefile中添加以下行来将库构建为ARM代码而不是Thumb代码:

LOCAL_ARM_MODE := arm

使用ARM模式应该没有问题...... ARM指令需要两倍的Thumb指令空间,但也更复杂,并且能够在单个指令中完成更多操作,因此根据编译器的聪明性,结果代码可能更大或更小,效率更高或效率更低,但应以相同的结果执行。

答案 1 :(得分: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;
   }

答案 2 :(得分:1)

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

ndk-build NDK_DEBUG=1&lt; ---错误

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

ndk-build NDK_DEBUG=0&lt; ---没有错误