交叉编译Android系统Linux层应用软件程序并运行

[TOC]
公司项目,需要将之前个一个程序从Mips平台交叉编译到Andriod平台,故此引出来制作交叉编译工具链并且在Linux层进行运行,现将详细步骤记录以供读者以飨各网友。
一、制交叉编译工具链

1.首先准备好制作交叉编译链需要的ndk,下载地址:http://dl.google.com/android/ndk/android-ndk32-r10-linux-x86.tar.bz2   或者至笔者百度网盘链接: http://pan.baidu.com/s/1jGElmPC 密码: nniw(下载方式自行解决)另外你还需要一个linux系统,不多说,开整.
2.把下载下来的压缩文件在linux系统中解压(或者在windows解压再传送到linux中,前提使用的是虚拟机环境),你就会得到NDK的文件夹

图1 NDK文件目录
3.打开终端,进入图片显示的文件夹,从NDK中导出standalone的交叉编译工具链

/usr/local/android-ndk-r10/build/tools/make-standalone-toolchain.sh --platform=android-19

“/usr/local/android-ndk-r10” 需要被替换为NDK的实际路径。
“make-standalone-toolchain.sh” 是Google官方提供的导出交叉编译工具链的脚本
”–platform=android-19” 指定导出的API,19代表安卓系统版本4.4.2
默认情况下,导出的是ARM架构的工具链。如果需要X86后者Mips架构的,需要加上“–arch=x86”或者“–arch=mips”
导出的压缩包将会位于 /tmp/ndk/.tar.bz2
4找到导出的压缩包,解压到自己定义的目录下

mkdir AndroidNDK 
tar -xjvf /tmp/ndk-rwang/arm-linux-androideabi-4.8.tar.bz2 -C ~/Android19NDK48/
  5将解压后toolchain所在的路径添加到环境变量中并重新加载环境配置文件。

vi ~/.bashrc
这是修改当前用户的默认配置,如果修改所有用户的配置这个文件是/etc/.bashrc,在文件最后一行添加
export PATH=$PATH:xx/AndroidNDK/arm-linux-andriodeabi-4.6/bin
xx代表你的自定义的AndriodNDK文件夹的上一层,最好输入绝对路径,这样就做好了交叉编译链,接下来就可以使用该编译链来进行编译一个简单文件

vi helloAndriod.c
#include <stdio.h>
int main()
{
    printf("hello Andriod \n");
    reurn 0;
}

写好测试文件,然后进行编译:
arm-linux-androideabi-gcc helloAndroid.c -o helloAndriod
出现编译错误自行排查,当然如果是c++文件编译的方法是一样的,只需将srm-linux-androideabi-gcc的gcc换成g++ 即可。
二、将编译好的程序在安卓设备上运行

至此交叉编译环节到此为止就成功了,接下来就是如何放置到板子上运行,本文将介绍两种方法,分别是在linux和Windows两种系统,各位看官请睁开眼看清楚咯。
1.在Linux系统上运行

使用SCP命令将编译好的helloAndroid上传到安卓的Linux的某个目录下,好吧,不少童鞋在此卡壳了,下面有请SSHDriod登场.

本人百度云盘,链接:http://pan.baidu.com/s/1dDygvLJ 密码:ycvw

SSHDroid 是 Android 版的 SSH 服务器。本应用程式可以让你连接你的设备并执行linux指令 (可使用 “terminal” 和 “adb shell”) 或者编辑档案 (通过 SFTP, WinSCP, Cyberduck 等等…).
在你的android设备上安装sshdriod软件,打开软件应该显示连接选项

图2 SSHdroid服务开启界面
当然root后的手机是最好,在Linux系统上打开使用SSH命令,输入上面的地址和端口号即可进行SSH连接,然后再打开一个终端可以使用SCP命令

scp helloAndrid  -P2222  root@192.xx.xx.xx/sdcard/

这是针对root后的设备如果没有root,请想办法root 或者在Windows系统下进行操作
文件上传后在刚刚开启的SSH终端里面进入/sdcard文件夹.输入./helloAndroid即可运行.

2.在Windows系统下运行

在Windows系统下,首先请出adb工具 ,

adb的全称为Android Debug Bridge,就是起到调试桥的作用。
借助adb工具,我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。

完整的ADB工具包,总共有四个文件,两个exe后缀,两个dll后缀。
完整的工具包里面会有fastboot文件,是exe后缀的。使用之前,打开工具包看一下就行了,这就叫确认有fastboot,如果没有,那就不是完整的工具包

链接:http://pan.baidu.com/s/1hqnkPwS 密码:3x9u,下载下来放到C盘根目录或者桌面,按下Windows+R键,输入cmd命令进入伪DOS环境,
进入adb目录下,输入adb connect 192.xx.xx.xx(安卓设备的IP)地址,如果显示connect success 进入下一步,否则自行搜索引擎解决问题
在此一步,将编译好的helloAndriod 文件从Linux系统拽到Windows系统,在Dos下使用命令 adb push XX\XX\helloAndroid /sdcard,教你一招,如果helloAndroid的路径比较难记可以直接拽到DOS界面上,如果push不成功 先执行一次 adb remount命令
执行adb shell 即以root用户登录了你的Andriod系统,,与Linux系统一样,你可以直接进入/sdcard目录 ./helloAndroid 来运行程序
如果想了解跟过adb相关的命令请自行搜索引擎,
至此,本文即将结束,有相关疑问可以跟帖,如果错误及纰漏还请指出,不胜感激。

参考资料:

1.http://ju.outofmemory.cn/entry/106967 使用Android NDK的交叉编译工具链移植C/C++项目到安卓平台
2.http://blog.sina.com.cn/s/blog_4a0a39c30101q1u4.html 如何用NDK创建一个标准的交叉编译工具链(Cross Toolchain)

猜你喜欢

转载自blog.csdn.net/csszzlsw/article/details/48630309