码迷,mamicode.com
首页 > 移动开发 > 详细

编译出arm Android环境下的C++可执行文件

时间:2018-05-22 10:46:56      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:shel   and   依赖   a.out   iostream   nload   ++   .com   一个   

 要想编译出arm环境的C++可执行文件主要就是利用交叉编译器进行编译。编译过程本身都大同小异。

 

1.安装交叉编译器,交叉编译器的安装方法大致有下面几条:

  A.debian/ubuntu 系统可以直接输入命令安装:

sudo apt install g++-arm-linux-gnueabihf    

sudo apt install g++-8-arm-linux-gnueabihf        #这种方式还可以指定版本

  B.直接下载交叉编译器的二进制文件,arm官网下载地址,这个网站的下载速度比较慢,可以baidu关键字gcc-arm-none-eabi寻找国内的下载地址,下载解压,把解压目录加入PATH环境变量或者把解压出来的文件复制到/usr/bin目录

  C.下载Android NDK,NDK里面自带了适用于Android的交叉编译工具链,下载后在prebuilt目录可以找到

  D.下载gcc源代码,手动编译安装

以上的几种方法除了手动编译可能会遇到各种依赖问题以外,其余的都比较简单,我这里刚好使用的是ubuntu 18.04的系统,就采用A方法安装的。

 

2.用交叉编译器编译代码,现在写一段很古老的程序,然后用交叉编译器编译:

#include<iostream>
using namespace std;

int main()
{
    cout << "hello world, from Android C++"  << endl;

    return 0;
}

执行命令编译:  

arm-linux-gnueabihf-g++-8  -static  helloworld.cpp     # 一定要加上 -static 静态链接的选项,不然编译出来的a.out执行不了

技术分享图片

 

3.将Android设备需要连上电脑,然后通过下面的步骤重新挂载Android为可读写的

adb root           # 该命令需要手机已经root
adb remount        
adb shell "mount -o rw,remount /system"    # rw 表示挂载为可读写read/write

 挂载好了以后使用adb shell登录到Android的shell环境,创建一个我们本次测试使用的文件夹"helloworld"

技术分享图片

然后使用adb命令把文件push到Android设备中去

adb push ./a.out /data/helloworld

技术分享图片

 

4.再次登录Android shell环境,为a.out文件赋权限(如果已经有了可执行的权限就可以不用再次赋权限了),然后执行:

adb shell                #登录Android shell环境

cd /data/helloworld      #进入a.out所在目录

chmod 777 a.out          #赋权限为777

./a.out                  #执行a.out

技术分享图片

可以看到,最终成功输出了 "hello world, from Android C++"  。

 

编译出arm Android环境下的C++可执行文件

标签:shel   and   依赖   a.out   iostream   nload   ++   .com   一个   

原文地址:https://www.cnblogs.com/tsfh/p/9070494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!