选择一个合适的版本下载,这里我下载的是:android-ndk-r22-linux-x86_64.zip
$ vim ~/.bashrc# .bashrc# User specific aliases and functionsalias rm='rm -i'alias cp='cp -i'alias mv='mv -i'# Source global definitionsif [ -f etc/bashrc ]; then. etc/bashrcfi
在最后位置加入下面两行:
export NDKROOT=/android-ndk/ndk/android-ndk-r22export PATH=$NDKROOT:$PATH
注意这里的:/android-ndk/ndk/android-ndk-r22是你解压的路径。
然后运行:source ~/.bashrc (或者重启电脑)
$ ndk-buildAndroid NDK: Could not find application project directory !Android NDK: Please define the NDK_PROJECT_PATH variable to point to it./android-ndk/ndk/android-ndk-r22/build/core/build-local.mk:151: *** Android NDK: Aborting . Stop.
出现上述内容代表成功
用于向构建系统描述源文件和共享库。它是一个微小的GNU makefile 片段,构建系统会将其解析一次或多次。提供了一些变量、宏、函数用于对项目进行编译。
Android.mk文件必须先定义一个LOCAL_PATH变量,这个变量指向你的项目路径,编译器在读取Android.mk文件的时候会先读取LOCAL_PATH变量,从中获取项目路径。然后在读取项目文件进行编译。
这里的my-dir代表的是当前目录
用于配置目标 ABI、工具链、发布/调试模式和 STL 的文件,内部定义了一些变量,可以进行上述功能的一些指定。比如:ABI
大致相当于CPU指令集,由于安卓开源,碎片化严重。导致有很多指令架构的手机出现,比如:arm、x86_64等。而配置Application.mk文件,可以为我们指定生成的文件是运行在哪个平台上的。
上述代码就指定了生成的文件属于什么架构,这里指定了:x86
#include <stdio.h>int main(){printf("android.jni\n");return 0;}
Android.mk
LOCAL_PATH := $(call my-dir)LOCAL_MODULE := hello-ndkLOCAL_SRC_FILES := ndk.cinclude $(BUILD_EXECUTABLE)
APP_ABI := x86
ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=Application.mk APP_BUILD_SCRIPT=Android.mk
然后就会出现如下内容
Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-16.[x86] Compile : hello-ndk <= ndk.c[x86] Executable : hello-ndk[x86] Install : hello-ndk => libs/x86/hello-ndk
代表编译成功

如果查看文件的结构,会发现其中带有Android的标识。


文章转载自上下博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




