關於jni編譯32位、64位動態庫(Android.mk和Application.mk檔案),jniapplication.mk

來源:互聯網
上載者:User

關於jni編譯32位、64位動態庫(Android.mk和Application.mk檔案),jniapplication.mk

 

最近新項目需要編譯64位的動態庫,這裡記錄如何配置。

在jni目錄下加入Android.mk和Application.mk檔案。

 

 

Application.mk

1 APP_ABI := armeabi armeabi-v7a arm64-v8a

Android.mk

1 LOCAL_PATH := $(call my-dir)2 include $(CLEAR_VARS)3 4 LOCAL_MODULE := hello-jni5 LOCAL_SRC_FILES := hello-jni.c6 7 include $(BUILD_SHARED_LIBRARY)

 

加上這兩個mk檔案後,編譯就會產生armeabi、armeabi-v7a、arm64-v8a的庫檔案。

 

補充:

 

Android.mk檔案是用來向build system(編譯系統)描述你的源檔案的,比如你要編一個靜態庫(.a檔案)  或 一個動態庫(.so檔案),將由build system解析一次或者多次。

Application.mk目的是GNU Makefile的一部分,描述你的應用所依賴的編譯系統中的模組(靜態庫或動態庫)。

 

在Android.mk檔案中判斷64位還是32位

 1 ifneq ($(filter $(NDK_KNOWN_DEVICE_ABI64S),$(TARGET_ARCH_ABI)),) 2 # 64-bit ABIs 3  4 …… 5 …… 6  7 else 8 # 32-bit ABIs 9 10 ……11 ……12 ……13 14 15 endif

 

編譯目標類型

每個Android.mk檔案後面都會指明要編譯什麼類型的輸出,比如下面:

 

編譯動態庫 : include $(BUILD_SHARED_LIBRARY)    

編譯靜態庫 : include $(BUILD_STATIC_LIBRARY)

輸出已編譯好的so檔案 : include $(PREBUILT_SHARED_LIBRARY)

編譯jar檔案 : include $(BUILD_JAVA_LIBRARY)

輸出已編譯好的apk檔案 : include $(BUILD_PREBUILT)

編譯apk檔案 : include $(BUILD_PACKAGE)

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.