2012-09-14 15 views
5

Estoy tratando de utilizar el NDK de Android en Mountain Lion para construir una biblioteca para Android, siguiendo esta guíaAndroid "error al intentar exec 'cc1plus': execvp: No existe el fichero o directorio" NDK-r8

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

Cuando llega el momento de compilar la biblioteca, corro:

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

me sale el siguiente error:

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 

Creo que he añadido todo lo que necesito a mi variable de ruta:

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 

¿Qué más tengo que hacer con el fin de conseguir esto para compilar? Estoy utilizando el NDK R8b actualmente, pero lo he probado con las versiones de todo el camino de vuelta a 6.

EDIT:

Probé esta solución: Error while building android ndk sample project

añadiendo

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

a mi camino me da este error:

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 

pero sumando

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

no ayuda, como lo hizo en el enlace de arriba.

+0

No estoy seguro de si eso ayuda: http://ubuntuforums.org/showthread.php?t=345201 falta el g ++ en tu sistema, tal vez? – zapl

+0

Todo lo que he leído dice que g ++ está instalado cuando instala x-code, que he instalado. Si necesito instalarlo por separado, ¿cómo lo hago? Todo lo que he visto usa apt-get para Linux. – Wingdom

+0

cuando solo ejecuto "g ++" en la línea de comandos, obtengo "i686-apple-darwin11-llvm-g ++ - 4.2: no hay archivos de entrada", por lo que g ++ está instalado. – Wingdom

Respuesta

6

he experimentado mismo error.
No pude ejecutar incluso el comando 'gcc, g ++'. Así que busqué en Google mucho para encontrar una solución, pero nada me ayudó.

Luego, encontré que un nombre de archivo en ndk no es correcto, con _ en algunos nombres de archivo ... (En mi caso, en toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/arm-linux -androideabi carpeta/bin, hay gcc_, g++_, en lugar de c++_gcc, g++, c++.)
he utilizado la Unarchiver para extraer archivo NDK, por lo que creo que hay algo mal con el procedimiento desarchivar.

Así que volví a descargar NDK y comprobé la suma de comprobación MD5, luego extraje el archivo usando la utilidad de archivo predeterminada de Mac.

Ahora, el problema se ha resuelto.

+0

Voy a probarlo un poco cuando tenga el tiempo. Espero que tengas razón. – Wingdom

0

Parece que tiene una mala descarga/desempaquetado del NDK. El binario cc1plus que está buscando debe estar en $NDK_HOME/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/libexec/gcc/arm-linux-androideabi/4.4.3/. Si no está allí, intente volver a descargar el SDK y/o desempaquetarlo nuevamente.

Si es allí, asegúrese de construir paso a V=1ndk-build, y ver si hay algún -B opciones impares pasan al compilador. La opción -B dice gcc dónde encontrar sus "subprogramas" (de los cuales cc1plus es uno). Seguramente no debería haber ninguna en las líneas de comando para r8, así que si hay algo en alguna parte está pasando malas banderas. Por ejemplo, en mi sistema, una línea de comandos C++ NDK termina buscando algo como esto:

/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

Tal vez usted necesita para instalar g ++:

$sudo apt-get install g++

0

He pasado alrededor de un día para encontrar la causa raíz de este

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

y otros temas.

Los problemas fueron que desempaqueté NDK y SDK con 7z que eliminó el permiso ejecutable para todos los binarios y Eclipse no pudo iniciar cc1. Una vez que desempaqueté los archivos tar de SDK y NDK usando tar, todo comenzó a funcionar bien.

Cuestiones relacionadas