夠用的Android.mk,ndk編譯(1)-編譯一個工程

夠用的ndk編譯系列

編譯一個應(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)。

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

相關(guān)閱讀更多精彩內(nèi)容

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