编译出arm Android环境下的C++可执行文件
要想编译出arm环境的C++可执行文件主要就是利用交叉编译器进行编译。编译过程本身都大同小异。
1.安装交叉编译器,交叉编译器的安装方法大致有下面几种:
A.debian/ubuntu 系统可以直接输入命令安装:
sudo apt install g++-arm-linux-gnueabihf sudo apt install g++--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 ;
}
执行命令编译:
arm-linux-gnueabihf-g++- -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文件赋权限(如果已经有了可执行的权限就可以不用再次赋权限了),然后运行a.out
adb shell #登录Android shell环境 cd /data/helloworld #进入a.out所在目录 chmod a.out #赋权限为777 ./a.out #运行a.out

可以看到,最终成功输出了 "hello world, from Android C++" 。
编译出arm Android环境下的C++可执行文件的更多相关文章
- Android 环境下编译FFmpeg
Android 环境下编译FFmpeg 开发环境:Ubuntu 12.04.2 LTS , android-sdk-linux, android-ndk-r8e 一 .X264 编译 1. X2 ...
- cocos2d-x 在android环境下开发遇到的一些bug
今天在弄一个关于android环境下解析xml的东东,遇到了2个比较麻烦问题 1.android的apk下文件是压缩文件,io.open模式无法读取到数据的, 解决思路就是: CCFileUtils: ...
- 编译mapnik(win7 环境下vs2008编译mapnik 0.7.1 成功)
编译mapnik(win7 环境下vs2008编译mapnik 0.7.1 成功) ------by wangsh 2012.02.22 Mapnik 是一个开源的 Python/C++ 地图渲染引 ...
- 【LDAP安装】在已编译安装的PHP环境下安装LDAP模块
在已编译安装的PHP环境下安装LDAP模块 (乐维温馨提示:其他模块也能以这个方式安装) 1.在PHP源码包内找到ldap模块文件 cd php-5.6.37 cd ext/ldap/ 2.phpiz ...
- 在高通平台Android环境下编译内核模块【转】
本文转载自:http://blog.xeonxu.info/blog/2012/12/04/zai-gao-tong-ping-tai-androidhuan-jing-xia-bian-yi-nei ...
- ffmpeg2.2在ubuntu下使用NDK编译——并在android工程下测试使用
作者:wainiwann 出处:http://www.cnblogs.com/wainiwann/ 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...
- android环境下两种md5加密方式
在平时开发过程中,MD5加密是一个比较常用的算法,最常见的使用场景就是在帐号注册时,用户输入的密码经md5加密后,传输至服务器保存起来.虽然md5加密经常用,但是md5的加密原理我还真说不上来,对md ...
- cocos2d-x 3.x丨搭建Android环境下的开发环境
所需要的一些工具软件: 1.JDK 官网下载地址:http://www.oracle.com/ttechnetwork/java/javase/downloads/index.html 2.Andr ...
- android环境下的即时通讯
首先了解一下即时通信的概念.通过消息通道 传输消息对象,一个账号发往另外一账号,只要账号在线,可以即时获取到消息,这就是最简单的即使通讯.消息通道可由TCP/IP UDP实现.通俗讲就是把一个人要发送 ...
随机推荐
- Tomcat学习笔记【4】--- Server.xml配置文件详解
本文主要讲如何配置Tomcat服务器. 首先展示一个BS结构图: 1 server 一个server就表示一个Tomcat实例. 1)port 指定一个端口,这个端口负责监听关闭tomcat的请求: ...
- Bootstrap——组件
1.字体图标 <span class="glyphicon glyphicon-star" aria-hidden="true"></span ...
- Java for LeetCode 129 Sum Root to Leaf Numbers
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...
- PAT天梯赛 L2-002. 链表去重 【STL】
题目链接 https://www.patest.cn/contests/gplt/L2-002 思路 用结构体 存储 一个结点的地址 值 和下一个地址 然后从首地址开始 往下走 并且每个值的绝对值 都 ...
- HTML5实现中国象棋游戏
在线演示 本地下载
- Bootstrap简单介绍
一.一个小知识点 1.截取长屏的操作 2.设置默认格式 3.md,sm, xs 4.空格和没有空格的选择器 二.响应式介绍 - 响应式布局是什么? 同一个网页在不同的终端上呈现不同的布局等 - 响应式 ...
- IDEAL葵花宝典:java代码开发规范插件 (maven helper)解决maven 包冲突的问题
小编说到: 在我们日常开发当中常常我们会遇到JAR包冲突.找来找去还找不到很是烦人.那么所谓的JAR包冲突是指的什么那?JAR包冲突就是-引入的同一个JAR包却有好几个版本. 例如: 项目中引用了两个 ...
- 搭建自己的AppRTCDemo服务器
http://www.jianshu.com/p/c55ecf5a3fcf http://io.diveinedu.com/2015/02/05/%E7%AC%AC%E5%85%AD%E7%AB%A0 ...
- hdu 6109 数据分割
/** * 题目描述有点坑,勉强能读懂,大致意思,有多组约束条件.原本每组数据之间是有分界符号的 * 现在分界符号没了,让你找出原来每组数据多少个条件,并且告诉,每组的最后一个条件会使得与前面的 * ...
- HDU-6035:Colorful Tree(虚树+DP)
这里有三道长得像的题: 一:HDU6036: There is a tree with nn nodes, each of which has a type of color represented ...