MSM8916 海信M9模块学习记录五:ubuntu16.04 64位 NDK-r16b使用一

参考:
https://blog.csdn.net/superfang119/article/details/8524132
https://blog.csdn.net/gaojinshan/article/details/9498375

1、首先新建一个工程(其实就是建一个文件夹),叫hello_exe

使用指令:

mkdir hello_exe

这里写图片描述

2、在工程目录下再创建一个jni目录

(这里说明一下,我一开没建工程文件所以图片里面的地址是有误的)
使用指令:
mkdir jni
这里写图片描述
之后发现建错了,用mv指令移动到工程目录下
这里写图片描述

3、在jni目录中新建一个hello_exe.c的文件。在hello_exe.c中填入如下内容:

使用指令创建
touch hello_exe.c
使用指令编辑
vim hello_exe.c
添加内容如下:

#include <stdio.h>
int main()
{
    printf("hello world\n");
    return 0;
}

这里写图片描述

4、在jni目录中新建一个Android.mk文件,内容如下:

使用指令创建
touch Android.mk
使用指令编辑
vim Android.mk
添加内容如下:

LOCAL_PATH:=$(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:=helloexe

LOCAL_SRC_FILES:=hello-exe.c

LOCAL_CFLAGS += -pie -fPIE    #PIE这个安全机制报错解决,安卓4.1之后要加

LOCAL_LDFLAGS += -pie -fPIE   #PIE这个安全机制报错解决,安卓4.1之后要加

include $(BUILD_EXECUTABLE)   #关键的最后一句,编译成可执行文件就靠它了。

这里写图片描述

5、在hello_exe目录下,执行ndk-build。运行如下:

目录下会多出 libs和obj目录
这里写图片描述

6、找到生成的可执行文件

这里写图片描述
M9能用的在armeabi-v7a目录下的helloexe编译通过了
这里写图片描述

7、将armeabi-v7a目录下的helloexe放到一下目录下:

ptboce\device\qcom\M9PLUS_10\qcom_bin\system\bin

之后编译安卓源码就会自动打包到烧录文件内
PS:这里讲的是编译源码的方式将可执行文件放到安卓源码里面一起编写生产,如果不想这样毕竟调试的每次编译烧源码还是比较烦的,所以也可直接将可执行文件导入到设备里面,请看我的下一篇文章记录六

8、安卓源码编译成功好

可以在以下两个文件夹内找到
ptboce/out/target/product/M9PLUS_10/system/bin/helloexe
这里写图片描述
ptboce/out/target/product/M9PLUS_10/obj/PACKAGING/target_files_intermediates/M9PLUS_10-target_files-L1193.6.01.01/SYSTEM/bin/helloexe
这里写图片描述

9、之后使用adb和fastboot烧录镜像到M9上

我这里烧录和之后的操作都是在WIN10上进行的,不是在ubuntu上了
如何使用安装adb和fastboot请,参考记录一

10、烧录完成后使用电脑adb连接安卓设备,执行adb shell

这里写图片描述

11、连接后找到helloexe所在的位置

cd system/bin
这里写图片描述

12、最后运行可执行文件

./helloexe
运行结果如下图,会打印出hello world
这里写图片描述

13、上图打印出现警告,了解一下,问题是不大的

参考:
https://blog.csdn.net/keial/article/details/79497704

猜你喜欢

转载自blog.csdn.net/u013422297/article/details/82593557