Application.mk中APP_ABI
在使用NDK編譯過程中發現針對不同的CPU架構,部分支援編譯除錯,部分不支援除錯,故記錄下來,以防忘記
在Application.mk檔案中有個預定義命令引數APP_ABI,是指明編譯與除錯的CPU架構。
目前Android系統支援以下七種不同的CPU架構:ARMv5,ARMv7(從2010年起),x86(從2011年),MIPS(從2012年),ARMv8,MIPS64和x86_64(從2014年),每一種都對應相應的ABI。
CPU架構 | ABI | |
ARMv5 | armeabi | 32位,從2010年 |
ARMv7 | armeabi-v7a | 32位,從2010年 |
x86 | x86 | 32位,從2011年 |
MIPS | mips | 32位,從2012年 |
ARMv8 | arm64-v8a | 64位,從2014年 |
MIPS64 | mips64 | 64位,從2014年 |
x86_64 | x86_64 | 64位,從2014年 |
相應生成arm64-v8a,mips64,x86_64下的檔案需要NDK_r10以上版本支援。在Application.mk檔案裡配置APP_ABI的內容。例如指明某個具體的CPU架構
APP_ABI := arm64-v8a
或者直接生成所有的版本
APP_ABI := all
注意:根據不同的NDK版本,APP_ABI := all僅能生成當前版本支援的ABI資訊庫檔案,如果需要生成最新的必須更新相應的NDK版本。
或者明確寫明支援的CPU架構
APP_ABI := armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64
建議採用該方法
注意:由於目前版本支援的問題,採用Eclipse+NDK+Windows整合方式開發,對應編譯生成對應CPU架構的so檔案是沒有問題的。但是不一定可以執行除錯工作,啟動NDK除錯模式時將會提示無法識別對應的ABI。
注意:(1)、目前模擬器只有x86_64的沒有arm64-v8a的;(2)、在用真機測試armv8-a時,最好先通過adb shell, cat /proc/cpuinfo ,來檢視下真機是否是支援armv8-a;(3)、arm32和arm64有些配置引數不能共存,如-msoft-float僅在arm32位下支援,在arm64位下是不支援的.
相關文章
- JAVA中object類中toString()方法JavaObject
- pytorch中中的模型剪枝方法PyTorch模型
- LINUX中斷--申請中斷和解除安裝中斷Linux
- linux中批量替換文字中字串Linux字串
- life is short 中譯本(嘗試中)
- Linux 中 sed 中xxx 的應用Linux
- 中斷和中斷處理程式
- 資料流中的中位數
- 中山開票-中山開票
- 中斷
- js中給陣列中物件去重JS陣列物件
- css中:not()選擇器和jQuery中.not()方法CSSjQuery
- 禁止 div 中的文字被滑鼠選中
- java——ArrayList中contains()方法中的疑問JavaAI
- toLua中Lua呼叫C#中的類C#
- 日本遊戲中的中國武術遊戲
- 如何取消頁面中選中的文字?
- 中臺戰略與中臺效應
- iProspect:變化中的中國遊客ROS
- MySQL中複製資料表中的資料到新表中的操作教程MySql
- Kotlin 中的集合(List中沒有了addAll())Kotlin
- java中的引用與c中的指標Java指標
- vite中配置less,vue3中配置lessViteVue
- 硬中斷,軟中斷,訊號,異常
- MySQL 當中的各種鎖(中級篇)MySql
- 中臺建設中的幕後意義
- VUE中v-for的4中使用方式Vue
- OC中的SEL與C中的const void *
- Linux 中grep命令中 -P選項的作用Linux
- toString().intern()中的intern()中的作用和使用
- 1202-資料流中的中位數
- 面試中聊到的javascript中的繼承面試JavaScript繼承
- 談談中臺架構之交易中臺架構
- JavaScript中的thisJavaScript
- opencv中SVMOpenCV
- wepy 使用中...
- 三中
- Java中LinkedListJava