Android ndk-r8“error trying to exec'cc1plus':execvp:没有这样的文件或目录” (Android ndk-r8“尝试执行'cc1plus'时出错:execvp:找不到文件或目录”)

5
我正在尝试在Mountain Lion上使用Android NDK为Android构建库,按照这个指南进行:

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

编译库时,我运行以下命令:
cd <path to jni>
<ndk>/ndk-build

I get the following 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

我相信我已经将需要的所有内容添加到了我的路径变量中:

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版本一直到最新版本。

编辑:

我尝试了这个解决方案:Error while building android ndk sample project

添加

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

不像上面链接中那样有帮助。


不确定是否有帮助:http://ubuntuforums.org/showthread.php?t=345201 你的系统可能缺少g++? - zapl
我所看到的所有内容都说当你安装Xcode时,g++也会被安装。而我已经安装了Xcode。如果我需要单独安装它,该怎么做呢?我所看到的所有内容都是针对Linux使用apt-get命令。 - Wingdom
当我在命令行上运行"g++"时,会出现"i686-apple-darwin11-llvm-g++-4.2: no input files"的提示,因此g++已经安装。 - Wingdom
这是一个错别字还是问题?cd <jni路径> /..; <path to ndk>/ndk-build - Alex Cohn
这是一个打字错误,我正在从我的项目目录中运行ndk-build命令。 - Wingdom
4个回答

6
我曾经遇到过相同的错误。
我甚至无法执行“gcc,g ++”命令。因此,我进行了大量搜索以寻找解决方案,但是对我来说没有任何帮助。
然后,我发现 ndk 中一些文件名不正确,某些文件名末尾有一个下划线(例如,在我的情况下,在toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/arm-linux-androideabi/bin 文件夹中,有gcc_、g++_和c++_,而不是 gcc、g++、c++)。
我使用 The unarchiver 解压 NDK 存档,所以我认为解压程序存在问题。
因此,我重新下载了 NDK 并检查了 MD5 校验和,然后使用 Mac 的默认存档实用程序提取了存档。
现在,问题已经解决了。

我会在稍后有时间的时候进行测试。希望你是正确的。 - Wingdom

0

也许您需要安装g++:

$sudo apt-get install g++


0

我花了大约一天的时间来找到这个问题的根本原因

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

以及其他问题。

问题在于我使用7z解压了NDK和SDK,这导致所有二进制文件的可执行权限被移除,Eclipse无法启动cc1。 当我使用tar解压SDK和NDK的tar文件后,一切都开始正常工作。


0

看起来你下载/解压NDK时出了问题。cc1plus二进制文件应该在$NDK_HOME/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/libexec/gcc/arm-linux-androideabi/4.4.3/路径下。如果不在那里,请尝试重新下载SDK并/或重新解压。

如果它那里,请确保传递V=1ndk-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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接