Artem Romanov
Artem Romanov

Reputation: 165

Error on building android-ndk-assets

I want load resources from c++ code. And try repeat this way. But when i try build it, i get:

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

Upvotes: 1

Views: 623

Answers (3)

user1892708
user1892708

Reputation: 31

I just ran into this problem as well. Another workaround is to build the library as ARM code instead of Thumb code by adding the following line to your makefile:

LOCAL_ARM_MODE := arm

There should be no problem using ARM mode... ARM instructions require twice the space of Thumb instructions but are also much more sophisticated and capable of accomplishing a lot more in a single instruction, so depending on the cleverness of the compiler the resultant code may be bigger or smaller as well as more efficient or less efficient, but should execute with the same results.

Upvotes: 3

Awesomeness
Awesomeness

Reputation: 651

I have a similar error in android-ndk-r8b as well. It occurs when calling ndk-build with the NDK_DEBUG flag set:

ndk-build NDK_DEBUG=1 <--- error

Try setting the NDK_BUILD flag to 0. It should compile. Of course it won't be debuggable :(

ndk-build NDK_DEBUG=0 <--- no error

Upvotes: 1

Sergey
Sergey

Reputation: 43

I had the same error in android-ndk-r8b. Looks like the bug in GCC. Do you submit bug report already?

I found the code which make error:

 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;
   }

Upvotes: 1

Related Questions