2012-09-14 9 views
5

Sto cercando di utilizzare l'NDK Android sul Leone di montagna per costruire una biblioteca per Android, seguendo questa guidaAndroid "errore nel tentativo di exec 'cc1plus': execvp: No such file or directory" NDK-r8

http://masl.cis.gvsu.edu/2012/01/25/android-echoprint/

Quando arriva il momento di compilare la libreria, corro:

cd <path to jni> 
<ndk>/ndk-build 

ottengo il seguente errore:

Compile++ thumb : echoprint-jni <= AndroidCodegen.cpp 
arm-linux-androideabi-g++: error trying to exec 'cc1plus': execvp: No such file or directory 
make: *** [/Users/wingdom/Desktop/obj/local/armeabi/objs/echoprint-jni/AndroidCodegen.o] Error 1 

Credo di aver aggiunto tutto quello che devo al mio percorso variabile:

export PATH=$PATH:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:Developer/android-sdk/tools:/Developer/android-sdk/platform-tools:/Developer/android-ndk:/Developer/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin 

Che altro devo fare per ottenere questo per compilare? Sto usando il r8b NDK attualmente, ma ho provato con tutte le versioni il viaggio di ritorno a 6.

EDIT:

ho provato questa soluzione: Error while building android ndk sample project

aggiungendo

export PATH=$PATH:/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2 

a il mio percorso mi ottiene questo errore:

cc1plus: error: unrecognized command line option "-mbionic" 
cc1plus: error: unrecognized command line option "-mthumb" 
cc1plus: error: unrecognized command line option "-mfpu=vfp" 
/Users/wingdom/Desktop/jni/AndroidCodegen.cpp:1: error: bad value (armv5te) for -march= switch 
/Users/wingdom/Desktop/jni/AndroidCodegen.cpp:1: error: bad value (xscale) for -mtune= switch 
make: *** [/Users/wingdom/Desktop/obj/local/armeabi/objs/echoprint-jni/AndroidCodegen.o] Error 1 

ma aggiungere

export CROSS_COMPILER=$PATH:/Developer/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin 

non aiuta, come ha fatto nel collegamento sopra.

+0

Non sono sicuro se questo aiuti: http://ubuntuforums.org/showthread.php?t=345201 manca g ++ sul tuo sistema forse? – zapl

+0

Tutto ciò che ho letto dice che g ++ è installato quando si installa x-code, che ho installato. Se devo installarlo separatamente, come lo faccio? Tutto ciò che ho visto usa apt-get per linux. – Wingdom

+0

quando eseguo semplicemente "g ++" sulla riga di comando, ottengo "i686-apple-darwin11-llvm-g ++ - 4.2: nessun file di input" quindi g ++ è installato. – Wingdom

risposta

6

ho sperimentato lo stesso errore.
Non ero in grado di eseguire nemmeno il comando 'gcc, g ++'. Quindi ho cercato tanto su Google per trovare una soluzione, ma nulla mi ha aiutato.

Quindi, ho trovato che alcuni nomi di file in ndk non sono corretti, con tailing _ su qualche nome file .. (Nel mio caso, in toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/arm-linux cartella -androideabi/bin, ci sono gcc_, g++_, c++_ invece di gcc, g++, c++.)
ho usato The Unarchiver per estrarre l'archivio NDK, quindi penso che ci sono qualcosa che non va con la procedura di estrazione dall'archivio.

Quindi ho scaricato nuovamente NDK e controllato il checksum MD5, quindi ho estratto l'archivio utilizzando l'utilità di archiviazione predefinita di Mac.

Ora il problema è risolto.

+0

Lo proverò un po 'quando avrò il tempo. Spero tu abbia ragione. – Wingdom

0

Sembra che tu abbia un download/decompressione errato dell'NDK. Il binario cc1plus che sta cercando dovrebbe essere in $NDK_HOME/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/libexec/gcc/arm-linux-androideabi/4.4.3/. Se non è presente, prova a scaricare nuovamente l'SDK e/oa decomprimerlo di nuovo.

Se è lì, assicuratevi di costruire passando V=1-ndk-build, e vedere se ci sono delle strane -B opzioni passate al compilatore. L'opzione -B dice a gcc dove trovare i suoi "sottoprogrammi" (di cui cc1plus è uno). Abbastanza sicuro che non ci dovrebbe essere alcuno sulle righe di comando per r8, quindi se ci sono, qualcosa da qualche parte sta passando delle bandiere sbagliate. Per esempio, sul mio sistema, una linea di comando C++ NDK finisce per guardare qualcosa di simile:

/opt/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-g++ -MMD -MP -MF ./obj/local/armeabi-v7a/objs/sometarget/SomeCppFile.o.d -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-exceptions -fno-rtti -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -I/opt/android-ndk/sources/cxx-stl/stlport/stlport -I/opt/android-ndk/sources/cxx-stl//gabi++/include -DANDROID -Wall -Wa,--noexecstack -frtti -O2 -DNDEBUG -g -I/opt/android-ndk/platforms/android-8/arch-arm/usr/include -c jni/SomeCppFile.cpp -o ./obj/local/armeabi-v7a/objs/sometarget/SomeCppFile.o 
0

Forse è necessario installare il g ++:

$sudo apt-get install g++

0

Ho passato circa un giorno per trovare delle cause di questo

arm-linux-androideabi-gcc: error trying to exec 'cc1': execvp: No such file... 

e altri problemi.

I problemi erano che ho decompresso NDK e SDK con 7z che rimuoveva il permesso eseguibile per tutti i binari ed Eclipse non era in grado di avviare cc1. Dopo aver decompresso i file tar di SDK e NDK usando tar, tutto ha funzionato bene.

Problemi correlati