以下在 Ubuntu下 编译一个 c 语言 hello world 并在 android 手机或模拟器上执行

进入程序位置

cd  ~/pnp5/jni

有三个文件 main.c Android.mk, Application.mk, 内容:

$ cat main.c 

#include <stdio.h>

int main (void)
{ printf("hello world");
return 0;
} ~/pnp5/jni$ cat Android.mk LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS) LOCAL_SRC_FILES:= \
main.c LOCAL_MODULE:= pnp5
LOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE) ~/pnp5/jni$ cat Application.mk
APP_ABI := all

注:Application.mk 能够没有(怎样你仅仅须要arm程序)

在当前文件夹执行 ndk-build

( 假设没有ndk,去下载一个)

~/pnp5/jni$ ~/android-ndk-r10d/ndk-build
[arm64-v8a] Compile : pnp5 <= main.c
[arm64-v8a] Executable : pnp5
[arm64-v8a] Install : pnp5 => libs/arm64-v8a/pnp5
[x86_64] Compile : pnp5 <= main.c
[x86_64] Executable : pnp5
[x86_64] Install : pnp5 => libs/x86_64/pnp5
[mips64] Compile : pnp5 <= main.c
[mips64] Executable : pnp5
[mips64] Install : pnp5 => libs/mips64/pnp5
[armeabi-v7a] Compile thumb : pnp5 <= main.c
[armeabi-v7a] Executable : pnp5
[armeabi-v7a] Install : pnp5 => libs/armeabi-v7a/pnp5
[armeabi] Compile thumb : pnp5 <= main.c
[armeabi] Executable : pnp5
[armeabi] Install : pnp5 => libs/armeabi/pnp5
[x86] Compile : pnp5 <= main.c
[x86] Executable : pnp5
[x86] Install : pnp5 => libs/x86/pnp5
[mips] Compile : pnp5 <= main.c
[mips] Executable : pnp5
[mips] Install : pnp5 => libs/mips/pnp5

发如今 与jni 同一级别的 libs 文件夹生成各种 target 的 程序。

在模拟器(真机)上执行

用 adb devices, 检查android是否启动

用 adb push pnp5 data/

用 adb shell 进入设备,而后执行 cd data; chmod 777 pnp5; ./pnp5

hello world 就打印出来了

最简单 NDK 样例的更多相关文章

  1. Android中关于JNI 的学习(零)简单的样例,简单地入门

    Android中JNI的作用,就是让Java可以去调用由C/C++实现的代码,为了实现这个功能.须要用到Anrdoid提供的NDK工具包,在这里不讲怎样配置了,好麻烦,配置了好久. . . 本质上,J ...

  2. Introspector(内省)简单演示样例 与 简单应用

    简单演示样例: package com.asdfLeftHand.test; import java.beans.BeanDescriptor; import java.beans.BeanInfo; ...

  3. JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例

    什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...

  4. Thrift的安装和简单演示样例

    本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述                                           ...

  5. [hadoop系列]Pig的安装和简单演示样例

    inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...

  6. 一则简单演示样例看Oracle的“无私”健壮性

    Oracle的强大之处就在于他能总帮助让你选择正确的运行计划,即使你给了它错误的指示. 实验: 1. 创建測试表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...

  7. scrapy爬虫学习系列二:scrapy简单爬虫样例学习

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  8. Android通过startService播放背景音乐简单演示样例

    关于startService的基本使用概述及其生命周期可參见博客<Android中startService的使用及Service生命周期>. 本文通过播放背景音乐的简单演示样例,演示sta ...

  9. 使用CEF(二)— 基于VS2019编写一个简单CEF样例

    使用CEF(二)- 基于VS2019编写一个简单CEF样例 在这一节中,本人将会在Windows下使用VS2019创建一个空白的C++Windows Desktop Application项目,逐步进 ...

随机推荐

  1. node.js入门之一

    简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务端Ja ...

  2. connection timeout 和command timeout

    每次对数据库连接时,我们有时候会碰到连接超时或者命令超时,这两个超时是不一样的.以ADO.NET为例,当客户端和服务器端连接时,碰到的超时情况主要有下面几种: ''' 当从连接池获取一个连接时,碰到超 ...

  3. Vue + Django 2.0.6 学习笔记 6.1-6.2 商品类别数据接口

    这两节主要是说获取商品类别的1 2 3类的列表和某个类的详情 我直接上代码吧 views.py: from .serializers import CategorySerializer class C ...

  4. java图片放大或缩小

    package org.jimmy.autotranslate20181022.utils; import java.awt.Graphics; import java.awt.image.Buffe ...

  5. win7 命令行禁用开启usb存储

    禁用: reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbstor" /v Start /t reg ...

  6. 06C#类

    C#类 1.2      类的继承 在1.3节,定义了一个描述个人情况的类Person,如果我们需要定义一个雇员类,当然可以从头开始定义雇员类Employee.但这样不能利用Person类中已定义的函 ...

  7. zabbix4.2学习笔记--新建用户组和用户

    新建用户组 zabbix中管理机器是以用户组划分,这里新建一个只读用户群组和只读用户 新建用户组 点击 管理-用户组-创建用户群组,如下图 点击创建之后,有三列设置,分别是用户群组.权限和标签过滤器, ...

  8. OpenCV2:应用篇 QT+OpenCV实现图片编辑器

    一.简介 做完会放在Github上  

  9. xingo的demo部署

    1)安装go 2)安装git xingo默认使用google protobuf来进行序列化和反序列化操作,所以需要安装 go get  github.com/golang/protobuf/proto ...

  10. python_流程控制

    1.if...else 语句 单分支 if 条件:    满足条件后要执行的代码 双分支: """ if 条件: 满足条件执行代码 else: if条件不满足就走这段 & ...