linux ndk编译搭建测试

一、ndk下载

NDK 下载  |  Android NDK  |  Android Developers

二、ndk环境变量配置

ndk解压:

unzip android-ndk-r26d-linux.zip 

环境变量配置:

 export NDK_HOME=/rd/own/test/android-ndk-r26d/
 export PATH=$PATH:$NDK_HOME

三、编译测试验证

3.1 程序创建

创建helloworld, 在其下创建jni目录,并准备好hello.c和Android.mk

rd@ubuntu:~/test/android-ndk-r26d$ cat helloword/jni/hello.c
#include <stdio.h>
int main (int argc,char *argv[])
{
        printf("hello world!");
        return 0;
}
rd@ubuntu:~/test/android-ndk-r26d$ cat helloword/jni/Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := helloworld
LOCAL_SRC_FILES := hello.c
#include $(BUILD_SHARED_LIBRARY)
include $(BUILD_EXECUTABLE)
编译库文件Android.mk参考:
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := FRE
LOCAL_SRC_FILES := FlashRuntime.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := NativeQCAR
LOCAL_SRC_FILES := main.c
LOCAL_SHARED_LIBRARIES := FRE
include $(BUILD_SHARED_LIBRARY)

备注:如果不创建jni目录,会报NDK_PROJECT_PATH 找不到。

Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.

如果不创建jni目录,则需要添加额外的配置( NDK_PROJECT_PATH、NDK_APPLICATION_MK和APP_BUILD_SCRIP),如下:

ndk-build NDK_PROJECT_PATH=/rd/test/android-ndk-r26d/helloword  NDK_APPLICATION_MK=/rd/test/android-ndk-r26d/Application.mk
cat Application.mk
APP_BUILD_SCRIPT := /rd/test/android-ndk-r26d/helloword/Android.mk

3.2 编译过程

~/test/android-ndk-r26d/build/ndk-build

Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-21.
[arm64-v8a] Compile        : helloworld <= hello.c
[arm64-v8a] Executable     : helloworld
[arm64-v8a] Install        : helloworld => libs/arm64-v8a/helloworld
[armeabi-v7a] Compile thumb  : helloworld <= hello.c
[armeabi-v7a] Executable     : helloworld
[armeabi-v7a] Install        : helloworld => libs/armeabi-v7a/helloworld
[x86] Compile        : helloworld <= hello.c
[x86] Executable     : helloworld
[x86] Install        : helloworld => libs/x86/helloworld
[x86_64] Compile        : helloworld <= hello.c
[x86_64] Executable     : helloworld
[x86_64] Install        : helloworld => libs/x86_64/helloworld

3.3 编译结果,默认会编译出不同架构的可执行文件

./helloword/libs/arm64-v8a/helloworld
./helloword/libs/x86/helloworld
./helloword/libs/x86_64/helloworld
./helloword/libs/armeabi-v7a/helloworld
./helloword/obj/local/arm64-v8a/objs/helloworld
./helloword/obj/local/arm64-v8a/helloworld
./helloword/obj/local/x86/objs/helloworld
./helloword/obj/local/x86/helloworld
./helloword/obj/local/x86_64/objs/helloworld
./helloword/obj/local/x86_64/helloworld
./helloword/obj/local/armeabi-v7a/objs/helloworld
./helloword/obj/local/armeabi-v7a/helloworld
 

3.4 测试执行

adb push  helloworld /data
data/helloworld
hello world!

3.5 编译说明

也可选择其他编译选项:

在jni目录或者helloword目录下执行:

ndk-build APP_ABI=all          //编译所有平台
ndk-build APP_ABI=armeabi-v7a  //编译armv7
ndk-build APP_ABI=mips         //编译mips

ndk-build APP_ABI=arm64-v8a //编译armv8A

其他ABI编译参考:build/cmake/abis.cmake

~/test/android-ndk-r26d/build/ndk-build // 默认多架构编译

生成的可执行文件在helloworld/libs或者helloword/obj下,不同平台对应不同的目录。

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a2591748032-随心所记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值