Android 交叉编译 Linux 可执行文件

前言

整理以前项目的时候发现以前做交叉编译,当时是交叉编译一个开源的c++项目到Android,直接使用NDK需要修改太多源码,本人对C也不是很熟悉,就研究了交叉编译。

本人电脑是 Ubuntu16.04,测试手机Android 8.0 系统

交叉编译工具链

安装 gcc:

sudo apt-get install arm-linux-gnueabi-gcc

安装g++

sudo apt-get install arm-linux-gnueabi-g++

安装cmake

sudo apt-get install cmake

Hello.c

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

生成ARM可执行文件

先使用gcc直接编译,后面使用cmake在做一次。

arm-linux-gnueabi-gcc hello.c -o hello -static 

当前目录下会生成一个名为hello的可执行文件,注意 -static 是一定要添加的

导入到设备

直接倒入到外置存储根目录:

adb push hello /sdcard/

此时shell进去还是无法运行。

在Android程序中调用

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        new Thread(() -> {
            CommandResult exec = ShellCommand.exec("cp /sdcard/hello /data/data/com.dome.hotfixdome/", false);
            Log.i(TAG, "run0: "+exec);
            CommandResult exec1 =ShellCommand.exec("chmod 751 /data/data/com.dome.hotfixdome/hello", false);
            Log.i(TAG, "run1: "+exec1);
            CommandResult exec2 = ShellCommand.exec("/data/data/com.dome.hotfixdome/hello", false<
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值