首先下載 ndk
https://developer.android.google.cn/ndk/downloads/
下載后解壓縮涩搓,然后將解壓后的目錄配置到系統(tǒng)環(huán)境變量 path 中誓沸,例如:
C:\android-ndk-r20
啟動(dòng)名利行窗口 CMD,輸入命令:
ndk-build -v
顯示出版本信息表示配置成功。
在工作目錄(例如:socket)下編寫測(cè)試程序,例如:
server.c
client.c
在此目錄下建立子目錄:jni
mkdir jni
進(jìn)入 jni 目錄,建立兩個(gè)文件
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
編譯
回到上級(jí)工程目錄(例如:socket)路狮,執(zhí)行
ndk-build
編譯成功后,編譯結(jié)果在 libs/arm64-v8a 目錄下
清理編譯文件可以執(zhí)行:
ndk-build clean
Android.mk 其他的編譯參數(shù)
編譯動(dòng)態(tài)庫(kù):include $(BUILD_SHARED_LIBRARY)
編譯靜態(tài)庫(kù):include $(BUILD_STATIC_LIBRARY)
加載第三方靜態(tài)庫(kù): LOCAL_STATIC_LIBRARIES := libgui liblog
加載第三方動(dòng)態(tài)庫(kù): LOCAL_SHARED_LIBRARIES := libgui liblog
LOCAL_C_INCLUDES
LOCAL_LDLIBS
LOCAL_LDFLAGS
LOCAL_CFLAGS
LOCAL_CPP_FLAGS
Application.mk 其他的編譯參數(shù)
- APP_CLAGS:列出編譯器標(biāo)識(shí)享郊,在編譯任何模塊的C和C++源文件時(shí)這些標(biāo)志都會(huì)被傳給編譯器
- APP_CPPFLAGS:列出編譯器標(biāo)識(shí)览祖,在編譯任何模塊的C++源文件時(shí)這些標(biāo)志都會(huì)被傳給編譯器
相關(guān)工具位置
toolchains\x86_64-4.9\prebuilt\windows-x86_64\bin\x86_64-linux-android-objdump.exe
其它參數(shù)參考
認(rèn)識(shí)Android.mk和Application.mk
NDK 編譯的三種方式
Android各個(gè)版本的NDK官方下載鏈接