windows 下使用 ndk 交叉編譯

首先下載 ndk

https://developer.android.google.cn/ndk/downloads/

下載后解壓縮,然后將解壓后的目錄配置到系統(tǒng)環(huán)境變量 path 中,例如:
C:\android-ndk-r20


image.png

啟動名利行窗口 CMD,輸入命令:
ndk-build -v
顯示出版本信息表示配置成功。

在工作目錄(例如:socket)下編寫測試程序,例如:

server.c
client.c

在此目錄下建立子目錄:jni
mkdir jni
進(jìn)入 jni 目錄,建立兩個文件
Android.mk 和 Application.mk
內(nèi)容如下

Android.mk

LOCAL_PATH := $(call my-dir)
#模塊1
include $(CLEAR_VARS)
LOCAL_CFLAGS += -fPIE  
LOCAL_LDFLAGS += -fPIE -pie
LOCAL_MODULE := yyq_server
LOCAL_SRC_FILES := ../server.c
include $(BUILD_EXECUTABLE)

#模塊2
include $(CLEAR_VARS)
LOCAL_CFLAGS += -fPIE  
LOCAL_LDFLAGS += -fPIE -pie
LOCAL_MODULE := yyq_client
LOCAL_SRC_FILES := ../client.c
include $(BUILD_EXECUTABLE)

注意這里面的 $(LOCAL_PATH) 的值是 Android.mk 本身所在路徑

Application.mk

APP_PLATFORM := android-21
APP_ABI := arm64-v8a

編譯

回到上級工程目錄(例如:socket),執(zhí)行
ndk-build
編譯成功后,編譯結(jié)果在 libs/arm64-v8a 目錄下

清理編譯文件可以執(zhí)行:
ndk-build clean

Android.mk 其他的編譯參數(shù)

  • 編譯動態(tài)庫:include $(BUILD_SHARED_LIBRARY)

  • 編譯靜態(tài)庫:include $(BUILD_STATIC_LIBRARY)

  • 加載第三方靜態(tài)庫: LOCAL_STATIC_LIBRARIES := libgui liblog

  • 加載第三方動態(tài)庫: LOCAL_SHARED_LIBRARIES := libgui liblog

  • LOCAL_C_INCLUDES

  • LOCAL_LDLIBS

  • LOCAL_LDFLAGS

  • LOCAL_CFLAGS

  • LOCAL_CPP_FLAGS

Application.mk 其他的編譯參數(shù)

  • APP_CLAGS:列出編譯器標(biāo)識,在編譯任何模塊的C和C++源文件時這些標(biāo)志都會被傳給編譯器
  • APP_CPPFLAGS:列出編譯器標(biāo)識,在編譯任何模塊的C++源文件時這些標(biāo)志都會被傳給編譯器

相關(guān)工具位置

toolchains\x86_64-4.9\prebuilt\windows-x86_64\bin\x86_64-linux-android-objdump.exe

其它參數(shù)參考

認(rèn)識Android.mk和Application.mk
NDK 編譯的三種方式
Android各個版本的NDK官方下載鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容