2017-03-08 2 views
2

J'ai testé pour construire l'échantillon dans la source SDL2 (2.0.5) sur ma machine ubuntu 16.04.Erreur de construction de l'exemple SDL2 avec android ndk r14

Selon https://wiki.libsdl.org/Android, j'ai installé android sdk et ndk r14 et configurer mes variables d'environnement.

Mais j'ai échoué à construire avec la commande suivante dans le chapitre "Construction simple".

cd /usr/src/SDL2/build-scripts/ 
./androidbuild.sh org.libsdl.testgles ../test/testgles.c 

Il se produit une erreur de suivi.

Error: The project either has no target set or the target is invalid. 
Please provide a --target to the 'android update' command. 
[armeabi] Compile thumb : SDL2 <= SDL.c 
[armeabi] Compile thumb : SDL2 <= SDL_assert.c 
[armeabi] Compile thumb : SDL2 <= SDL_error.c 
[armeabi] Compile thumb : SDL2 <= SDL_hints.c 
[armeabi] Compile thumb : SDL2 <= SDL_log.c 
[armeabi] Compile thumb : SDL2 <= SDL_audio.c 
[armeabi] Compile thumb : SDL2 <= SDL_audiocvt.c 
[armeabi] Compile thumb : SDL2 <= SDL_audiodev.c 
[armeabi] Compile thumb : SDL2 <= SDL_audiotypecvt.c 
[armeabi] Compile thumb : SDL2 <= SDL_mixer.c 
[armeabi] Compile thumb : SDL2 <= SDL_wave.c 
fatal error: error in backend: Cannot select: 0x43bd850: i32 = ARMISD::SSAT 0x43acfc0, Constant:i32<15> 
    0x43acfc0: i32 = add 0x43ac770, 0x43bd690 
    0x43ac770: i32 = sra 0x43bda80, Constant:i32<8> 
     0x43bda80: i32 = add 0x43ac460, 0x43ad2d0 
     0x43ac460: i32 = add 0x4399d70, 0x43bdf50 
      0x4399d70: i32 = mul 0x43ad180, 0x439a160 
      0x43ad180: i32,ch = load<LD2[%15](tbaa=<0x4229ab8>), sext from i16> 0x42e7b60, 0x43acaf0, undef:i32 
       0x43acaf0: i32 = add 0x4399bb0, Constant:i32<2> 
       0x4399bb0: i32,ch = CopyFromReg 0x42e7b60, Register:i32 %vreg2 
        0x439a5c0: i32 = Register %vreg2 
       0x4399fa0: i32 = Constant<2> 
       0x43aca10: i32 = undef 
      0x439a160: i32,ch = load<LD2[%12](tbaa=<0x42638a8>), sext from i16> 0x42e7b60, 0x4399ec0, undef:i32 
       0x4399ec0: i32 = add 0x43ac7e0, Constant:i32<6> 
       0x43ac7e0: i32,ch = CopyFromReg 0x42e7b60, Register:i32 %vreg0 
        0x43bdd20: i32 = Register %vreg0 
       0x439a710: i32 = Constant<6> 
       0x43aca10: i32 = undef 
      0x43bdf50: i32 = mul 0x43ac4d0, 0x439a470 
      0x43ac4d0: i32,ch = load<LD2[%2](tbaa=<0x4229ab8>), sext from i16> 0x42e7b60, 0x4399bb0, undef:i32 
       0x4399bb0: i32,ch = CopyFromReg 0x42e7b60, Register:i32 %vreg2 
       0x439a5c0: i32 = Register %vreg2 
       0x43aca10: i32 = undef 
      0x439a470: i32,ch = load<LD2[%6](tbaa=<0x42638a8>), sext from i16> 0x42e7b60, 0x439a080, undef:i32 
       0x439a080: i32 = add 0x43ac7e0, Constant:i32<4> 
       0x43ac7e0: i32,ch = CopyFromReg 0x42e7b60, Register:i32 %vreg0 
        0x43bdd20: i32 = Register %vreg0 
       0x43ace70: i32 = Constant<4> 
       0x43aca10: i32 = undef 
     0x43ad2d0: i32 = srl 0x43aca80, Constant:i32<24> 
      0x43aca80: i32 = sra 0x43ac460, Constant:i32<31> 
      0x43ac460: i32 = add 0x4399d70, 0x43bdf50 
       0x4399d70: i32 = mul 0x43ad180, 0x439a160 
       0x43ad180: i32,ch = load<LD2[%15](tbaa=<0x4229ab8>), sext from i16> 0x42e7b60, 0x43acaf0, undef:i32 
        0x43acaf0: i32 = add 0x4399bb0, Constant:i32<2> 


        0x43aca10: i32 = undef 
       0x439a160: i32,ch = load<LD2[%12](tbaa=<0x42638a8>), sext from i16> 0x42e7b60, 0x4399ec0, undef:i32 
        0x4399ec0: i32 = add 0x43ac7e0, Constant:i32<6> 


        0x43aca10: i32 = undef 
       0x43bdf50: i32 = mul 0x43ac4d0, 0x439a470 
       0x43ac4d0: i32,ch = load<LD2[%2](tbaa=<0x4229ab8>), sext from i16> 0x42e7b60, 0x4399bb0, undef:i32 
        0x4399bb0: i32,ch = CopyFromReg 0x42e7b60, Register:i32 %vreg2 

        0x43aca10: i32 = undef 
       0x439a470: i32,ch = load<LD2[%6](tbaa=<0x42638a8>), sext from i16> 0x42e7b60, 0x439a080, undef:i32 
        0x439a080: i32 = add 0x43ac7e0, Constant:i32<4> 


        0x43aca10: i32 = undef 
      0x43bd700: i32 = Constant<31> 
      0x439a550: i32 = Constant<24> 
     0x43acd20: i32 = Constant<8> 
    0x43bd690: i32 = mul 0x43ad260, 0x43bdd90 
     0x43ad260: i32,ch = load<LD2[%24](tbaa=<0x42638a8>), zext from i16> 0x42e7b60, 0x43bdc40, undef:i32 
     0x43bdc40: i32 = add 0x43ac7e0, Constant:i32<2> 
      0x43ac7e0: i32,ch = CopyFromReg 0x42e7b60, Register:i32 %vreg0 
      0x43bdd20: i32 = Register %vreg0 
      0x4399fa0: i32 = Constant<2> 
     0x43aca10: i32 = undef 
     0x43bdd90: i32 = ARMISD::CMOV 0x439a390, 0x439a940, Constant:i32<0>, Register:i32 %CPSR, 0x43ac5b0 
     0x439a390: i32 = add 0x439a940, Constant:i32<-16> 
      0x439a940: i32 = AssertZext 0x439a6a0, ValueType:ch:i8 
      0x439a6a0: i32,ch = CopyFromReg 0x42e7b60, Register:i32 %vreg1 
       0x43ace00: i32 = Register %vreg1 
      0x43ac700: i32 = Constant<-16> 
     0x439a940: i32 = AssertZext 0x439a6a0, ValueType:ch:i8 
      0x439a6a0: i32,ch = CopyFromReg 0x42e7b60, Register:i32 %vreg1 
      0x43ace00: i32 = Register %vreg1 
     0x43bdbd0: i32 = Constant<0> 
     0x43ac620: i32 = Register %CPSR 
     0x43ac5b0: glue = ARMISD::CMPZ 0x439a2b0, Constant:i32<0> 
      0x439a2b0: i32 = and 0x439a940, Constant:i32<8> 
      0x439a940: i32 = AssertZext 0x439a6a0, ValueType:ch:i8 
       0x439a6a0: i32,ch = CopyFromReg 0x42e7b60, Register:i32 %vreg1 
       0x43ace00: i32 = Register %vreg1 
      0x43acd20: i32 = Constant<8> 
      0x43bdbd0: i32 = Constant<0> 
    0x43acf50: i32 = Constant<15> 
In function: MS_ADPCM_nibble 
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation) 
Android clang version 3.8.275480 (based on LLVM 3.8.275480) 
Target: armv5te-none-linux-android 
Thread model: posix 
InstalledDir: /home/idkiller/android-ndk-r14/toolchains/llvm/prebuilt/linux-x86_64/bin 
clang: note: diagnostic msg: PLEASE submit a bug report to http://llvm.org/bugs/ and include the crash backtrace, preprocessed source, and associated run script. 
clang: note: diagnostic msg: 
******************** 

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT: 
Preprocessed source(s) and associated run script(s) are located at: 
clang: note: diagnostic msg: /tmp/SDL_wave-929d6f.c 
clang: note: diagnostic msg: /tmp/SDL_wave-929d6f.sh 
clang: note: diagnostic msg: 

******************** 
make: *** [obj/local/armeabi/objs/SDL2/src/audio/SDL_wave.o] Error 70 
make: *** Waiting for unfinished jobs.... 
Buildfile: /home/idkiller/work17/SDL2-2.0.5/build/org.libsdl.testgles/build.xml 

BUILD FAILED 
/home/idkiller/work17/SDL2-2.0.5/build/org.libsdl.testgles/build.xml:56: sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable. 

Total time: 0 seconds 
There was an error building the APK 

Je pense d'abord Erreur sur 'android update' pourrait être correctif avec faire la commande de mise à jour à la main dans le répertoire du projet.

Mais je ne peux pas deviner pourquoi backend LLVM fait cette erreur sur la compilation SDL_wave.c

est-SDL2 SOUTENIR construire avec Clang 3.8 encore?

+0

Je suis sûr qu'il existe un moyen de construire des applications SDL manuellement en utilisant 'ndk-build' et' ant', décrit dans les instructions de construction quelque part. Peut-être que ça marcherait. – HolyBlackCat

+0

Je devais faire la mise à jour android et ndk-build manuellement dans le répertoire du projet, mais la même erreur était apparue. –

Répondre

6

J'ai juste le même problème et je le résous, c'est si bon!

Je suppose qu'il a été provoqué par le compilateur clang.exe.

Tout ce que vous devez faire est de modifier votre application.mk (Si vous utilisez NDK_BUILD)

ajouter une ligne « NDK_TOOLCHAIN_VERSION = 4.9 (dépend de votre version de GCC) »

0

Pour ajouter un peu à la réponse de L.wc essayez ceci:

NDK_TOOLCHAIN_VERSION = 4.9 ./androidbuild.sh org.libsdl.testgles de

4.9 serait la version de toolchain dans votre installation NDK.