夠用的ndk編譯系列
前置知識
Windows 安裝NDK環(huán)境
http://m.itdecent.cn/p/5bb78124de78github鏈接https://github.com/cpnyualc/sample_ndk_build_guide.git
*分支demo1
編譯一個應(yīng)用,顯示 Hello Word
ndk-build命令從目錄下面的jni文件夾下找Android.mk文件,然后按照其Application.mk規(guī)則進(jìn)行編譯。
Android.mk相當(dāng)于makefile。
Application.mk用于指定stl庫,它是Android NDK構(gòu)建系統(tǒng)使用的一個可選的構(gòu)建文件,也是一個GNU Makefile片段。主要用于1、設(shè)置編譯庫的類型;2、用于選擇STL;3、平臺app api版本
因此,jni文件夾下面包含這兩個文件。
簡單的例子
目錄結(jié)構(gòu)是這樣
sample_ndk_build_guide-----jni----Android.mk
---------------------------------------------Application.mk
---------------------------------------------demo.c
Android.mk
LOCAL_PATH := $(call my-dir) #設(shè)置當(dāng)前目錄
include $(CLEAR_VARS) #請除前面的變量
LOCAL_ARM_MODE := arm #arm mode
LOCAL_MODULE := project_name #工程名字,編譯出來的目標(biāo)名字
LOCAL_SRC_FILES := demo.c #包含的編譯c/c++文件。
include $(BUILD_EXECUTABLE) #編譯成一個可執(zhí)行文件
Application.mk
APP_ABI := armeabi-v7a arm64-v8a
#APP_PLATFORM := 25
demo.c
#include<stdio.h>
void main()
{
printf("Now!\n");
}
來biu~~biu~~biu~~一下,進(jìn)入相關(guān)目錄,biu~~
PS C:\Users\Chaos\Desktop\blog\sample_ndk_build_guide> ndk-build.cmd
[armeabi-v7a] Compile arm : project_name <= demo.c
[armeabi-v7a] Executable : project_name
[armeabi-v7a] Install : project_name => libs/armeabi-v7a/project_name
[arm64-v8a] Compile : project_name <= demo.c
[arm64-v8a] Executable : project_name
[arm64-v8a] Install : project_name => libs/arm64-v8a/project_name
PS C:\Users\Chaos\Desktop\blog\sample_ndk_build_guide>
可以看到
sample_ndk_build_guide目錄下生成了/libs/和/obj/。libs文件夾里頭有arm64-v8a/project_name和armeabi-v7a/project_name文件。會生成兩個不同架構(gòu)的文件是因為Application.mk指定了架構(gòu)。