使用ndk创建Android系统内的可执行程序


title: 使用ndk创建Android系统内的可执行程序

date: 2020-02-29 21:08:20

tags:

  • android

  • linux可执行文件

  • arm

  • C语言


使用ndk创建Android系统内的可执行程序

我们在用ndk的时候大多数是创建的so文件,然后在java层调用.但是今天我们要编写的是直接可以在Android系统上面执行的文件,也就是arm版本的elf文件

首先新建一个目录

我们就简单的写一个demo,目录的名字我就叫Calc,因为我们要用c写一个简单的计算器程序.

然后我们在Calc目录下面在建立一个jni目录

新建一个文件,Android.mk文件,内容如下

LOCAL_PATH := $(call my-dir)
include $(CALEAR_VARS)
LOCAL_ARM_MODULE := arm
LOCAL_MODULE :=calc
LOCAL_MODULE_FILENAME := calc
LOCAL_SRC_FILES := main.c
include $(BUILD_EXECUTABLE)
APP_PLATFORM := android-16
APP_ALLOW_MISSING_DEPS=true
#include <stdio.h>
​
int add(int x, int y) {
    return x + y;
}
​
int sub(int x, int y) {
    return x - y;
}
​
int mul(int x, int y) {
    return x * y;
}
​
int div(int x, int y) {
    return x / y;
}
​
int main() {
    int x, y;
    int num;
    int rel = 0;
    int result = 0;
    do {
        printf("请输入第一个操作数: ");
        scanf("%d", &x);
        printf("请选择[ 1.+ 2.- 3.* 4./] :");
        scanf("%d", &num);
        printf("请输入第二个操作数: ");
        scanf("%d", &y);
        switch (num) {
            case 1: {
                rel = add(x,y);
            }
            break;
            case 2:{
                rel = sub(x,y);
            }
            break;
            case 3:{
                rel = mul(x,y);
            }
            break;
            case 4:{
                rel = div(x,y);
            }
            break;
            default:{
                printf("错误的操作");
            }
        }
        printf("结果:%d \n",rel);
        printf("是否继续: [0.退出 1.继续]");
        scanf("%d",&result);
    } while (result);
    return 0;
}

建立好以后,我们退回到Calc目录下面,执行ndk-build,这样就可以构建出我们想要的执行文件,对应的文件会在各个平台对应的文件夹内生成

然后建立我们的main.c文件,内容如下

因为上面的内容都是mk文件的基本设置,这里没什么好说的.

新建Application.mk文件,内容如下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值