2012-09-14 53 views
5

我試圖使用Android NDK的山獅打造的Android庫,該指南的Android NDK-R8「錯誤試圖給exec‘cc1plus’:execvp:沒有這樣的文件或目錄」

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

編輯:

我試過這個解決方案: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 

沒有幫助,就像它在上面的鏈接中所做的一樣。

+0

不知道這是否有幫助:http://ubuntuforums.org/showthread.php?t=345201你的系統上可能缺少g ++嗎? – zapl

+0

我讀過的所有內容都說當您安裝我已安裝的x代碼時,會安裝g ++。如果我需要單獨安裝,我該怎麼做?我見過的所有東西都使用apt-get for linux。 – Wingdom

+0

當我在命令行上運行「g ++」時,得到「i686-apple-darwin11-llvm-g ++-4.2:no input files」,所以安裝了g ++。 – Wingdom

回答

6

我遇到過同樣的錯誤。
我甚至無法執行'gcc,g ++'命令。所以我搜索了很多,找到解決方案,但沒有任何幫助。

然後,我發現ndk中的一些文件名不正確,在某些文件名上加了_ ..(在我的例子中,在工具鏈/ arm-linux-androideabi-4.6/prebuilt/darwin-x86/arm-linux -androideabi/bin文件夾,有gcc_g++_c++_代替gccg++c++。)
我使用的取檔解壓NDK存檔,所以我覺得有什麼毛病解除封存手續。

因此,我重新下載了NDK並檢查了MD5校驗和,然後使用Mac的默認存檔實用程序提取存檔。

現在問題已解決。

+0

當我得到時間時,我會稍微測試一下。我希望你是對的。 – Wingdom

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 
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文件,一切都開始順利運行。

相關問題