我想从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
答案 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; ---没有错误