Android执行Native可执行文件

参考:
http://gslab.qq.com/article-119-1.html
http://wiki.jikexueyuan.com/project/jni-ndk-developer-guide/ndk.html

步骤

$ mkdir helloworld && cd helloworld
$ mkdir jni && cd jni
$ touch Android.mk
$ touch HelloWorld.c
$ vi HelloWorld.c
#include <stdio.h>

int main(int argc, char *argv[])
{
    puts("Hello, caiqiqi's JNI!");
    return 0;
}
$ vi Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWorld
LOCAL_SRC_FILES := HelloWorld.c
LOCAL_ARM_MODE := arm
include $(BUILD_EXECUTABLE)

其中LOCAL_MODULE标明编译之后的二进制文件名、LOCAL_SRC_FILES 为需要编译的文件(本次编译源码文件为HelloWorld.c),LOCAL_ARM_MODE 为源码文件需要编译为哪种汇编指令集。include $(BUILD_EXECUTABLE)标明需要编译为可执行二进制文件,如果需要编译为动态的so库文件,则需要编写为include $(BUILD_SHARED_LIBRARY)
这里写图片描述
直接用ndk-build发现会有错误。
这里写图片描述
然后设置NDK_PROJECT_PATH为当前目录,即jni目录的父目录。

$ export NDK_PROJECT_PATH=.

然后再执行ndk-build即可。
这里写图片描述
file一下,查看文件类型

$ file libs/armeabi/HelloWorld                          [23:17:09]
libs/armeabi/HelloWorld: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /system/bin/linker, stripped

发现是ARM平台的32-bit的可执行文件,Mac上显然是无法执行的
这里写图片描述
然后放到我的Nubia上(5.0)发现无法执行。
这里写图片描述
那就放到文档Nexus 5上(4.4)吧,终于执行成功啦
这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值