Autore Topic: NDK errore compilazione Fatal error: invalid -march= option: `armv7-a' su linux  (Letto 2552 volte)

Offline rosciio

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    sony ray
  • Sistema operativo:
    linux
Ciao ragazzi, ho un problema con l'NDK. Semplicemente voglio compilare l'esempio hello-jni presente di default nell'NDK. Sono sotto linux a 32 bit. Dando il comando ottengo questo risultato:

marco@marco:~/android-ndk-r8d/samples/hello-jni$ sudo /home/marco/android-ndk-r8d/./ndk-build
Gdbserver      : [arm-linux-androideabi-4.6] <NDK>/samples/hello-jni/libs/armeabi-v7a/gdbserver
Gdbsetup       : <NDK>/samples/hello-jni/libs/armeabi-v7a/gdb.setup
Compile thumb  : hello-jni <= hello-jni.c
Assembler messages:
Fatal error: invalid -march= option: `armv7-a'
make: *** [obj/local/armeabi-v7a/objs-debug/hello-jni/hello-jni.o] Error 1
marco@marco:~/android-ndk-r8d/samples/hello-jni$

Vedete cose errate? dovrei inserire qualche percorso in qualche variabile? vedo strano <NDK>

ciaooooooo

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Molto probabilmente non trova il percorso del compilatore gcc per Android e usa il compilatore della distribuzione Linux che usi (non predisposto per compilare per ARM).

Prova a vedere se le variabili d'ambiente riportate col comando "printenv | grep -i ndk" hanno delle impostazioni sbagliate.

Puoi controllare tutti i percorsi usati se compili con il comando "ndk-build V=1".

Nel caso più estremo puoi verificare tutti i passaggi nel NDK se compili con "ndk-build NDK_LOG=1".
adb logcat | tee /tmp/logcat | grep TAG

Offline rosciio

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    sony ray
  • Sistema operativo:
    linux
marco@marco:~/android-ndk-r8d/samples/hello-jni$ /home/marco/android-ndk-r8d/./ndk-build NDK_LOG=1
HOST_OS=linux
HOST_ARCH=x86
HOST_TAG=linux-x86
GNUMAKE=/home/marco/android-ndk-r8d/prebuilt/linux-x86/bin/make (NDK prebuilt)
Android NDK: NDK installation path auto-detected: '/home/marco/android-ndk-r8d'
Android NDK: GNU Make version 3.81 detected
Android NDK: Host OS was auto-detected: linux
Android NDK:  Host operating system detected: linux
Android NDK: Host CPU was auto-detected: x86
Android NDK: HOST_TAG set to linux-x86
Android NDK: Host tools prebuilt directory: /home/marco/android-ndk-r8d/prebuilt/linux-x86/bin
Android NDK: Host 'echo' tool: echo
Android NDK: Host 'echo -n' tool: printf %s
Android NDK: Host 'cmp' tool: cmp
Android NDK: Host 'awk' tool: /home/marco/android-ndk-r8d/prebuilt/linux-x86/bin/awk
Android NDK: Host 'awk' test returned: Pass
Android NDK:  This NDK supports the following target architectures and ABIS:
Android NDK:    arm: armeabi armeabi-v7a
Android NDK:    mips: mips
Android NDK:    x86: x86
Android NDK:  This NDK supports the following toolchains and target ABIs:
Android NDK:    arm-linux-androideabi-4.4.3:  armeabi armeabi-v7a
Android NDK:    arm-linux-androideabi-4.6:  armeabi armeabi-v7a
Android NDK:    arm-linux-androideabi-4.7:  armeabi armeabi-v7a
Android NDK:    arm-linux-androideabi-clang3.1:  armeabi armeabi-v7a
Android NDK:    mipsel-linux-android-4.4.3:  mips
Android NDK:    mipsel-linux-android-4.6:  mips
Android NDK:    mipsel-linux-android-4.7:  mips
Android NDK:    mipsel-linux-android-clang3.1:  mips
Android NDK:    x86-4.4.3:  x86
Android NDK:    x86-4.6:  x86
Android NDK:    x86-4.7:  x86
Android NDK:    x86-clang3.1:  x86
Android NDK: Found platform root directory: /home/marco/android-ndk-r8d/platforms
Android NDK: Found supported platforms: android-14 android-3 android-4 android-5 android-8 android-9
Android NDK: PLATFORM android-14 supports: arm mips x86
Android NDK:   ABI arm sysroot is: /home/marco/android-ndk-r8d/platforms/android-14/arch-arm
Android NDK:   ABI mips sysroot is: /home/marco/android-ndk-r8d/platforms/android-14/arch-mips
Android NDK:   ABI x86 sysroot is: /home/marco/android-ndk-r8d/platforms/android-14/arch-x86
Android NDK: PLATFORM android-3 supports: arm
Android NDK:   ABI arm sysroot is: /home/marco/android-ndk-r8d/platforms/android-3/arch-arm
Android NDK: PLATFORM android-4 supports: arm
Android NDK:   ABI arm sysroot is: /home/marco/android-ndk-r8d/platforms/android-4/arch-arm
Android NDK: PLATFORM android-5 supports: arm
Android NDK:   ABI arm sysroot is: /home/marco/android-ndk-r8d/platforms/android-5/arch-arm
Android NDK: PLATFORM android-8 supports: arm
Android NDK:   ABI arm sysroot is: /home/marco/android-ndk-r8d/platforms/android-8/arch-arm
Android NDK: PLATFORM android-9 supports: arm mips x86
Android NDK:   ABI arm sysroot is: /home/marco/android-ndk-r8d/platforms/android-9/arch-arm
Android NDK:   ABI mips sysroot is: /home/marco/android-ndk-r8d/platforms/android-9/arch-mips
Android NDK:   ABI x86 sysroot is: /home/marco/android-ndk-r8d/platforms/android-9/arch-x86
Android NDK: Found stable platform levels: 14 3 4 5 8 9
Android NDK: Found max platform level: 14
Android NDK: Found project path: .
Android NDK: Ouput path: ./obj
Android NDK: Parsing ./jni/Application.mk
Android NDK:   APP_PIE is
Android NDK:   Defaulted to APP_BUILD_SCRIPT=/home/marco/android-ndk-r8d/samples/hello-jni/jni/Android.mk
Android NDK: Application 'local' *is* debuggable
Android NDK: Selecting debug optimization mode (app is debuggable)
Android NDK: Adding import directory: /home/marco/android-ndk-r8d/sources
Android NDK: Building application 'local' for ABI 'armeabi-v7a'
Android NDK: Using target toolchain 'arm-linux-androideabi-4.6' for 'armeabi-v7a' ABI
Android NDK: Looking for imported module with tag 'cxx-stl/system'
Android NDK:   Probing /home/marco/android-ndk-r8d/sources/cxx-stl/system/Android.mk
Android NDK:     Found in /home/marco/android-ndk-r8d/sources/cxx-stl/system
Gdbserver      : [arm-linux-androideabi-4.6] <NDK>/samples/hello-jni/libs/armeabi-v7a/gdbserver
Gdbsetup       : <NDK>/samples/hello-jni/libs/armeabi-v7a/gdb.setup
Compile thumb  : hello-jni <= hello-jni.c
Assembler messages:
Fatal error: invalid -march= option: `armv7-a'
make: *** [obj/local/armeabi-v7a/objs-debug/hello-jni/hello-jni.o] Error 1

considera che ho provato tutto su un altro pc linux(in macchina virtuale) e li funziona. probabilmente qui c'è qualche problema come dici te nel cercare il compilatore giusto. anche se lo pesca nel path dell ndk...


Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Nel caso di compilazione a buon fine le ultime righe del log sono le seguenti:

Codice: [Seleziona]
...
Gdbserver      : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Install        : libhello-jni.so => libs/armeabi/libhello-jni.so

come vedi sul mio computer con compare nessun "<NDK>".

Controlla tutte le variabili d'ambiente e i file di configurazione.
adb logcat | tee /tmp/logcat | grep TAG

Offline rosciio

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    sony ray
  • Sistema operativo:
    linux
si probabilmente ho nel PATH qualcosa che non torna. domani lo confronto con il PATH di un pc funzionante. aggiorno domani ciao

oppure mi posteresti il tuo PATH una volta eseguito nkd-build? sicuro esso fa degli export (ovviamente locali alla shell che hai usato)

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Sono un esperto utente Linux in miei path e variabili ambienti sono enormi, complessi e incompressibili :-)

Ti posso assicurare che il problema non è negli export fatti dal comando ndk-build.
adb logcat | tee /tmp/logcat | grep TAG

Offline rosciio

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    sony ray
  • Sistema operativo:
    linux
ahahah ok... senti leggo esperto linux.. sto studiando il kernel linux e principalmente mi sto interessando alla creazione e gestione di driver... ho tantissimi dubbi a riguardo... attualmente ho un pò mollato, limitandomi a capire il funzionamento di driver pre esistenti... se ne sai potrei disturbarti? ciaoo