使用MinGW和NDK编译安卓C语言程序
本文最后更新于:2023年2月8日 晚上
一、搭建环境
1)配置MinGW
Windows 系统需要安装 MinGW,Linux 系统默认就有 gcc/g++ 编译套件无需安装。
MinGW下载:https://osdn.net/projects/mingw/
下载 mingw-get-setup.exe 即可,这是一个用于下载安装MinGW的程序(MinGW Installation Manager),运行后在主界面勾选 mingw32-base-bin 和 mingw32-gcc-g++-bin,然后点击左上角 Installation -> Apply Changes,程序这才开始下载配置相关环境。
安装完毕后,需要配置环境变量,将 MinGW 安装路径 D:\MinGW\bin
添加到系统环境变量 Path 中。
以上就配置完毕了,可以打开终端执行命令 gcc --version
确认是否配置正确。
2)配置NDK
NDK下载:https://developer.android.com/ndk/downloads/index.html
NDK更简单一些,通过以上链接下载对应平台的包,例如 android-ndk-r25b-windows.zip,下载后解压,自己找个合适的地方存放就行,例如我将其放在 D:\android-ndk-r25b
,同样将该路径加入到系统 Path 环境变量中即可。
可以执行命令 ndk-build --version
确认是否配置正确。
二、编译安卓C语言程序
随便写个C程序 main.c:
#include <stdio.h>
int main()
{
printf("Hello world.\n");
return 0;
}
添加 Android.mk:
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:=main
LOCAL_SRC_FILES:=main.c
include $(BUILD_EXECUTABLE)
TARGET_ARCH := arm64
TARGET_ARCH_ABI := arm64-v8a
编译命令:ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk
编译会产生两个文件夹 libs 和 obj,两个文件夹下都有编译生成的可执行程序,网上查的资料说是 obj 文件夹下的是包含一些调试相关东西,体积通常会相对大一些。
编译产物 libs/arm64-v8a/main 可以直接放到安卓手机中运行。
adb push libs/arm64-v8a/main /data/
adb shell "chmod +x /data/main"
adb shell "./data/main"