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++'. Така че търсих много в Google, за да намеря решение, но нищо не ми помогна.

След това открих, че някое име на файл в ndk не е правилно, с опашка _ на някое име на файл.. (В моя случай в toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/arm-linux-androideabi/bin папка, има gcc_, g++_, c++_ вместо gcc, g++, c++.)
Използвах разархиватора за извличане на 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