/****************************************************************************

* Android 运行 Linux 可执行程序

* 声明:

* 1. Linux可执行程序不能放在sdcard上,会导致没有权限,强烈建议放在

* /data/目录下,本人的可执行程序是放在了/data/local/中.

* 2. 通过sdk自带的adb.exe将Linux可执行程序放到目标机上,cmd命令如下:

* adb push

* 参数解析:

* 1. local file absolute path: PC机Linux可执行程序的绝对路径;

* 2. target file absolute path: Android机放置Linux可执行程序

* 的绝对路径;

* 3. 可以使用普通的arm-linux-gcc生成”静态”的可执行程序,也可以使用

* NDK来生成可执行程序,本人均测试过了.

*

* 2015-4-25 周六 晴 深圳 南山 曾剑锋

***************************************************************************/\\\\\\\\\\\\\\\\* 目录 *//

|一. 参考文档:|二. 测试程序 buzz_test.c:|三. Android.mk:|四. 编译测试程序:|五. adb.exe在哪里:|六. 如何使用adb(以Windows 7为例):

\\\\\\\\\\\\\\\\\\\\//一. 参考文档:1. 编写在Android的Linux系统中直接运行的可执行程序 -检测CPU能力:

http://blog.csdn.net/abnerchai/article/details/6830644

2. Android的ADB工具使用:

http://www.cnblogs.com/devinzhang/archive/2011/12/17/2291396.html

二. 测试程序 buzz_test.c:

#include#include

#define BUZZ_ON 30

#define BUZZ_OFF 31

int main ( int argc, char **argv ) {int i = 0;int run_status = 1;int buzz_status = 0;int buzz_file = open( "/dev/buzz", O_RDWR );if ( buzz_file == -1) {

printf("open /dev/buzz failed...\n");return -1;

}while( run_status ) {

usleep(1000 * 2);

i++;if ( 1500 ==i ) {

run_status= 0;

}if ( i % 2 == 0)

ioctl( buzz_file, BUZZ_ON);elseioctl( buzz_file, BUZZ_OFF);

}

close(buzz_file);

}

三. Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE :=buzz_test

LOCAL_SRC_FILES :=buzz_test.c

# 有时候编译的时候会发现找不到头文件,那么我们就可以在ndk的根目录下使用:find * -iname

# 这样你就能找到一些文件路径,选择一个,路径到inlucde就行了,如下是备用,有些程序是不需要的

# LOCAL_C_INCLUDES := /cygdrive/d/ndk/android-ndk-r10d/platforms/android-21/arch-arm/usr/include

include $(BUILD_EXECUTABLE)

四. 编译测试程序:1. 可使用arm-linux-gcc编译获取Linux可执行程序:

arm-linux-gcc buzz_test.c -o buzz_test -static

2. 可使用NDK编译获得Linux可执行程序:1. 确保你的电脑配置好了Cygwin NDK环境;2. 在源程序的目录下创建jni目录;3. 将buzz_test.c Android.mk拷贝到jni目录;4. 在Cygwin跳转到3中jni上一级目录,也可以认为是Android的工程目录;5. 运行$NDK/ndk-build,一般是这么做的;6. jni上一级目录下的libs/armeabi/buzz_test可执行文件;

.

├─jni

├─libs

└─armeabi

└─buzz_test--->最终我们需要的Linux可执行文件3. 就目前的测试结果而言,以上方法任选其一都行;

五. adb.exe在哪里:

你下载的sdk的platform-tools文件夹中,网上说不一定在这个文件夹中,如果你找不到,

那就搜索一下吧:1. Linux下用find;2. Windows 7下打开sdk文件夹,右上角那个框框里输入adb.exe,自动找,

本人真心不知道那个地方叫什么名字 :)

六. 如何使用adb(以Windows 7为例):1. 打开Windows cmd;2. 跳到adb.exe所在的文件夹;3. adb devices1. 查看当前是否有Android机连接了电脑,本文仅仅假设只有一台Android机连接了电脑.2. cmd显示结果:

List of devices attached

0123456789ABCDEF device4. 由于只有一台Android设备,所以这里我们可以使用以下命令传送Linux可执行文件:1. adb push 参数解析:1. local file absolute path: PC机Linux可执行程序的绝对路径;2. target file absolute path: Android机放置Linux可执行程序的

绝对路径;

也许会你和我一样觉得诧异,这是怎么做到的,不过她确实做到了 :)2. 例如:

adb push D:/buzz_test /data/local/cmd显示结果:1302 KB/s <580120 bytes in 0.435s>

5. 使用adb进入Android设备:1. adb shell (如果只有一台Android设备,可以这么干,反正我是这么个干的 :) )

cmd显示结果:

root@android:/ # --->代表进入了android手机2. cd /data/local

cmd显示结果:

cd/data/local3. ls

cmd显示结果:

ls

buzz_test--->我们通过adb push传入的文件

bmp4. chmod 777buzz_test

cmd显示结果:

chmod777buzz_test5. ls -al buzz_test

cmd显示结果:

ls-al buzz_test-rwxrwxrwx root root 580120 2015-04-21 07:49buzz_test6. ./buzz_test ---> 到这里也就能够执行你的Linux可执行程序

安卓跑linux程序_Android 运行 Linux 可执行程序相关推荐

  1. 后台运行linux程序,后台运行Linux程序的方法

    后台运行Linux程序,可以通过crontab设置,这种方法一般用来让一个程序定时运行,也可以通过./test &这样在程序末尾加上一个&使程序在后台运行. 编写代码,下面我将参考ht ...

  2. linux程序压缩运行,linux压缩命令【应对步骤】

    虽然电脑已经很普遍了,但是一些年长的人对电脑的操作不是很熟悉,比如在使用win7系统时一旦遇到linux压缩命令 时就懵了,对于linux压缩命令 处理起来相对来说较简单,按照我们的步骤处理linux ...

  3. iphone7运行linux,iPhone 7成新一代刷机神机!继安卓后,又成功运行Linux

    iPhone 7成新一代刷机神机!继安卓后,又成功运行Linux 2020年04月27日 14:32作者:NJNR205编辑:陈惺惺文章出处:泡泡网原创 分享 4月27日消息,据外媒报道,继前段时间i ...

  4. 安装教程之Windows 11安装Linux子系统并运行Linux GUI应用

    简介 在Windows 11上不仅可以运行Android 应用,还可以运行Linux应用,而且几乎感觉不到差别,就像运行Windows自己的应用一样.要想运行Linux应用需要安装Windows 11 ...

  5. 安卓跑linux程序_Android下运行Linux可执行程序

    2019-07-22 关键字:/system/bin/sh: xxx: No such file or directory 虽然说 Android 也是基于 Linux 的,但总归来说它们的编译链还是 ...

  6. 单片机上运行linux程序代码,在Linux下烧录51单片机

    原标题:在Linux下烧录51单片机 *本文作者:LEdge1,本文属 FreeBuf原创奖励计划,未经许可禁止转载. 背景 我一直在学习Linux 系统,但是最近还要学习51单片机,所以在Linux ...

  7. linux 程序占内存,linux下,一个运行中的程序,究竟占用了多少内存

    1. 在linux下,查看一个运行中的程序, 占用了多少内存, 通常的命令有php (1). ps aux:html 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存.linux RSS列 ...

  8. 怎么在手机上不用root运行Linux,【termux系列】安卓手机不需要root运行Linux终端,并开启图形化远程...

    前言 众所周知,安卓是基于Linux二次开发的手机系统,也是支持Linux指令的,使用一些软件就可以完美运行Linux指令,Linux终端是分的有root版与非root版的,本次就使用非root的终端 ...

  9. linux更改用户名_破旧安卓手机第二春,在安卓手机上使用Linux_deploy运行Linux

    由于服务器位于国外,害怕被墙掉导致数据丢失,所以在本地写了脚本每小时从服务器上导出并下载到本地.但是电脑不可能二十四小时开机,所以很想买一个树莓派4玩玩.但是太贵辽,还好搜索到了Android运行Li ...

最新文章

  1. 清华大学校计算机志班,计算机系2020年度酒井之星 | 个人篇
  2. linux 虚拟化之rhev Hypervisor 安装
  3. 每天一个linux命令(21):find命令之xargs
  4. Android零基础入门第89节:Fragment回退栈及弹出方法
  5. Linux 查看数据库MySQL安装文件和安装目录的命令
  6. java中值传递和引用传递
  7. Linux 实操———CentOS 6 安装配置 Oracle JDK 1.8
  8. UI设计学习软件下载的好去处
  9. 2.11 计算机视觉现状
  10. 5. linux操作系统bios启动过程需要执行哪几个操作?,Linux系统启动的大致过程
  11. VS编程,WPF中,通过C# 创建颜色选择器,颜色拾取器,调色板的一种方法
  12. 网络---协议(TCP/IP五层模型)
  13. html制作象棋教程入门教程,canvas 纯js 绘制中国象棋棋盘
  14. linux系统可以在移动硬盘,如何在移动硬盘上装LINUX系统?
  15. 最近发现谷歌浏览器打开网页速度很慢,比IE都慢
  16. 编译原理LL(1)文法-判断,first,follow,select,分析字符串
  17. mac 高清壁纸推荐
  18. 大数据治理工程师_大数据治理遇到的问题有哪些?大数据工程师必须认真应对...
  19. 倒计时软件app排行榜前十名中敬业签超好用
  20. VMware安装、启动虚拟机报错:无法打开内核设备“\\.\VMCIDev\VMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导?

热门文章

  1. 越南智能制造平台服务商
  2. isNaN()的用法
  3. 前端vue+后端koa,全栈式开发bilibili首页(附源码)
  4. Win11电脑链接拨号上网错误651
  5. bxSlider轮播图
  6. java 新生代中的Eden与两个Survivor区详解
  7. 复习效率低?这个学习方法,你学会了吗?
  8. 深度学习FPGA实现基础知识13(向专家致敬--深度学习-LeCun、Bengio和Hinton的联合综述)
  9. 辞职了,领导都加多少留你?
  10. Vue中的组件,看我就够了