Ошибка Android ndk-r8 при попытке выполнить «cc1plus»: execvp: нет такого файла или каталога

Я пытаюсь использовать Android NDK на Mountain Lion для создания библиотеки для Android, следуя этому руководству.

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

Когда приходит время компилировать библиотеку, я запускаю:

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

Я получаю следующую ошибку:

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

Я считаю, что добавил все, что мне нужно, в переменную пути:

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

Что еще мне нужно сделать, чтобы это скомпилировать? В настоящее время я использую r8b NDK, но пробовал его с версиями вплоть до 6.

РЕДАКТИРОВАТЬ:

Я попробовал это решение: Ошибка при создании примера проекта android ndk

добавление

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

на мой путь получает эту ошибку:

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

но добавив

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

не помогает, как это было в ссылке выше.


person Wingdom    schedule 14.09.2012    source источник
comment
Не уверен, поможет ли это: ubuntuforums.org/showthread.php?t=345201 отсутствует g++ в вашей системе может быть?   -  person zapl    schedule 15.09.2012
comment
Все, что я читал, говорит, что g++ устанавливается при установке x-code, который я установил. Если мне нужно установить его отдельно, как мне это сделать? Все, что я видел, использует apt-get для Linux.   -  person Wingdom    schedule 15.09.2012
comment
когда я просто запускаю g++ в командной строке, я получаю i686-apple-darwin11-llvm-g++-4.2: нет входных файлов, поэтому g++ установлен.   -  person Wingdom    schedule 15.09.2012
comment
Это опечатка или проблема? cd ‹путь к jni› /..; ‹путь к ndk ›/ndk-build   -  person Alex Cohn    schedule 15.09.2012
comment
это опечатка, я запускаю ndk-build из каталога моих проектов.   -  person Wingdom    schedule 15.09.2012


Ответы (4)


У меня возникла такая же ошибка.
Мне не удалось выполнить даже команду "gcc, g++". Поэтому я много гуглил, чтобы найти решение, но мне ничего не помогло.

Затем я обнаружил, что какое-то имя файла в ndk неверно, с хвостом _ в каком-то имени файла. в папке есть gcc_, g++_, c++_ вместо gcc, g++, c++.)
Я использовал Unarchiver для извлечения архива NDK, поэтому я думаю, что с процедурой разархивирования что-то не так.

Поэтому я повторно загрузил NDK и проверил контрольную сумму MD5, а затем распаковал архив с помощью стандартной утилиты архивации Mac.

Теперь проблема решена.

person Taeho Kim    schedule 18.09.2012
comment
Я проверю это через некоторое время, когда у меня будет время. Я надеюсь ты прав. - person Wingdom; 18.09.2012

Похоже, у вас плохая загрузка/распаковка NDK. Искомый двоичный файл cc1plus должен находиться в $NDK_HOME/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/libexec/gcc/arm-linux-androideabi/4.4.3/. Если его там нет, попробуйте повторно загрузить SDK и/или снова распаковать его.

Если он есть, обязательно выполните сборку с передачей V=1 в ndk-build и посмотрите, не переданы ли компилятору какие-либо нечетные -B параметры. Параметр -B сообщает gcc, где найти его "подпрограммы" (одной из которых является cc1plus). Почти уверен, что их не должно быть в командных строках для r8, поэтому, если они есть, что-то где-то передает плохие флаги. Например, в моей системе командная строка C++ NDK выглядит примерно так:

 /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
person kelnos    schedule 17.09.2012

Возможно, вам нужно установить g++:

$sudo apt-get install g++

person liushuaikobe    schedule 04.12.2013

Я потратил около дня, чтобы найти основную причину этого

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

и другие вопросы.

Проблема заключалась в том, что я распаковал NDK и SDK с помощью 7z, который удалил права на выполнение для всех двоичных файлов, и Eclipse не смог запустить cc1. Как только я распаковал tar-файлы SDK и NDK с помощью tar, все заработало.

person Volodymyr Ostap    schedule 29.07.2014