Application Binary Interface
ABI定義了函數庫的調用、應用的二進制文件(尤其是.so)如何運行在相應的系統平台上等細節。
Android目前支持以下七種ABI:armeabi、armeabi-v7a、arm64-v8a、x86、x86_64、mips、mips64。
Android目前有以下七種cpu架構:ARMv5、ARMv7、ARMv8、x86、x86_64、MIPS和MIPS64。
ARM 是指 Advanced RISC Machine 是一個32位元精簡指令集(RISC)處理器架構,其廣泛地使用在許多嵌入式系統設計。
RISC stand for Reduced Instruction Set Computing
CPU架構 | 最優ABI |
---|---|
ARMv5 | armeabi |
ARMv7 | armeabi-v7a |
ARMv8 | arm64-v8a |
x86 | x86 |
x86_64 | x86_64 |
MIPS | mips |
MIPS64 | mips64 |
應用程式安裝到設備時,只有該設備的CPU架構支持的最優 so庫才會被安裝
理論上應該為每個ABI目錄提供對應的so庫。但是Android支持7種ABI,若全部支持,必然導致APK包過大。
* 一般只保留armeabi、armeabi-v7a這兩個ABI的so庫。
Link:
https://www.jianshu.com/p/170f65439844
https://www.jianshu.com/p/f23df3aa342c
http://david740204.pixnet.net/blog/post/412169557-android-studio裡自定android.mk和application.mk
由於嵌入式系統先天上的限制(有限的記憶體大小、處理器的效能、系統可能沒有螢幕顯示相關訊息等等),在嵌入式系統內執行compiler、assembler 等開發工具有時是不可能的。因此,軟體開發工具必須能提供跨平台編譯的功能,才能符合實際的需求。
–Build machine:the machine builds cross toolchains
–Host machine:the machine cross toolchains will execute on
–Target machine:the machine cross toolchains will produce outputs for
note