2016-10-07 69 views
0

我試圖編譯使用下面的命令(視窗64)C源文件:的Android鏘MIPS/MIPS64彙編程序錯誤「無法執行命令:程序不可執行」

E:/Android/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/bin/clang -target mipsel-none-linux-android -gcc-toolchain E:/Android/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64 -D__android__ --sysroot=E:/Android/android-sdk/ndk-bundle/platforms/android-24/arch-mips -o "C:/array.o" -c "C:/array.c" 

每次我得到的錯誤:

clang.exe: error: unable to execute command: program not executable 
clang.exe: error: assembler command failed with exit code 1 (use -v to see invocation) 

我已驗證的文件夾和所需的二進制文件(我的NDK安裝是從Android SDK本身)。

我也有在MacOS完全相同的問題,但更多的輸出,其中出現「程序不可執行」的錯誤:

clang: error: unknown argument: '-march' 
clang: error: unknown argument: '-mabi' 
clang: error: unknown argument: '-call_nonpic' 
clang: error: unknown argument: '-KPIC' 
clang: error: no such file or directory: 'mips32r2' 
clang: error: no such file or directory: '32' 
clang: error: assembler command failed with exit code 1 (use -v to see invocation) 

-v顯示如下(在Windows 64和MacOS,和MacOS呼叫「在/ usr/bin中/ AS」):

Android clang version 3.8.256229 (based on LLVM 3.8.256229) 
Target: mipsel-none-linux-android 
Thread model: posix 
... 
clang -cc1 version 3.8.256229 based upon LLVM 3.8.256229 default target x86_64-unknown-linux 
... 
"as" -march mips32r2 -mabi 32 -call_nonpic -EL -KPIC 

帶有省略號是路徑輸出(均證實是正確的) - 重申同樣的問題發生在Windows 64和MacOS。


每隔支持的Android NDK體系結構使用此命令(交換路徑和-target爲其他架構)完美的罰款。 i686,x86_64,aarch64,armv5te,armv6和armv7-a都可以在Windows x64和macOS上運行。

我也嘗試過所有路徑引號/不引號的組合 - 沒有區別。


這個問題發生在mips,mips64,mipsel和mips64el。

回答

1

-gcc-toolchain E:/Android/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64

GCC toolchain需要指向GCC工具鏈,而不是Clang。我不知道爲什麼其他架構正在工作。可能Clang使用的是內置彙編器,但是這仍然不能解釋它在哪裏得到它的鏈接器...

您可能感興趣的https://android.googlesource.com/platform/ndk/+/master/docs/user/standalone_toolchain.md。它將處理確保編譯器可以像這樣直接正確使用的細節。

+0

非常感謝。 很奇怪,它適用於其他架構,特別是在不同的環境中。我想這就是爲什麼我錯過了這個。 –