著论准过秦,作赋拟子虚。这篇文章主要讲述编译出arm Android环境下的C++可执行文件相关的知识,希望能为你提供帮助。
要想编译出arm环境的C++可执行文件主要就是利用交叉编译器进行编译。编译过程本身都大同小异。
1.安装交叉编译器,交叉编译器的安装方法大致有下面几种:
A.debian/ubuntu 系统可以直接输入命令安装:
sudo apt install g++-arm-linux-gnueabihfsudo 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源代码,手动编译安装
【编译出arm Android环境下的C++可执行文件】以上几种方法除了手动编译可能会遇到各种依赖问题以外,其余的都比较简单,我这里刚好使用的是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-statichelloworld.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文件赋权限(如果已经有了可执行的权限就可以不用再次赋权限了),然后运行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++" 。
推荐阅读
- 10分钟了解Android的Handler机制
- VS2008中的配置文件app.config简单小结
- 转载快速理解android View的测量onMeasure()与MeasureSpec
- Charles Android 抓包失败SSLHandshake: Received fatal alert: certificate_unknown
- 下载必要的android sdk
- 安卓GreenDao(基础)
- Application.Exit()结束程序,但线程还在的解决方法。
- SpringBoot application.proerties基本配置
- BAT大牛 带你深度剖析Android 10大开源框架