Android独立交叉编译环境搭建
我们经常需将一些C/C++源码编译成本地二进制,直接在android的linux内核上运行,这是就需要进行交叉编译。由于Android的运行环境核普通Linux又区别,所以常规方式针对ARM进行交叉编译得到的二进制,无法直接运行在Android环境上。我们需要机遇Android环境进行交叉编译,这时有两种方式:一种是编写Android.mk,在安卓源码结构下依靠安卓的编译系统搞定;另一种方式是脱离android源码体系,利用独立的android交叉编译工具链,并适当修改目标代码的Makefile(必要时还要修改源码)完成交叉编译。第一种方式适用于编译目标源码结构简单的情况;当目标源码的Makefile组织非常复杂的时候,第二种方式则是更好的选择。本文介绍第二种方式,即搭建Android独立交叉编译环境,编译出可以在Android(默认基于ARM64)上运行的二进制(ELF)程序。
1、NDK下载
https://developer.android.google.cn/ndk/downloads/index.html
本文以宿主机系统MacOS为例,所以下载MacOSX版本的ndk包
2、利用NDK安装android交叉编译工具链
#include <stdio.h> int main(void)
{
printf("Hello, this is a program compiled by ndk-cross-compiler!\n");
}
NickPro:tmp nickyang$ adb push hello /data
hello: file pushed. 0.1 MB/s ( bytes in .112s)
NickPro:tmp nickyang$ adb shell
generic_arm64:/ # cd data
generic_arm64:/data # ls -l | grep hello
-rwxrwxrwx root root -- : hello
generic_arm64:/data # ./hello
Hello, this is a program compiled by ndk-cross-compiler!
|generic_arm64:/data #
执行成功,顺利输出打印!
Android独立交叉编译环境搭建的更多相关文章
- android NDK开发环境搭建
android NDK开发环境搭建 2012-05-14 00:13:58 分类: 嵌入式 基于 Android NDK 的学习之旅-----环境搭建 工欲善其事必先利其器 , 下面介绍下 Eclip ...
- Android studio 开发环境搭建
Android studio 开发环境搭建 一.环境: 下载java jdk:http://www.oracle.com/technetwork/cn/java/javase/downloads/jd ...
- Android入门之环境搭建
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1376935560.html 原创:An ...
- Android自动化测试之环境搭建
Android自动化测试之环境搭建 一.Android-sdk介绍 SDK(Software development kit)软件开发工具包.被软件开发工程师用于为特定的软件包.软件框架.硬件平台. ...
- Exynos4412交叉编译环境搭建
Exynos4412交叉编译环境搭建 交叉编译:在PC机(x86平台)上开发程序,在ARM板上运行,提高开发.编译速度. 环境: Tiny4412SDK1506开发板 需要软件: arm-linux- ...
- Android自动化测试-UiAutomator2环境搭建
Android自动化测试-UiAutomator环境搭建(QQ交流群:490451176) 一.环境准备 1. 安装android sdk,并配置环境变量 2. 安装android studio,国内 ...
- android测试开发环境搭建
本文档针对未接触过android的0基础人员,在开始熟悉android之前,首先需要一个学习环境来支撑,在此简单介绍一下android环境搭建.(当然大家也可以百度.谷歌,类似的文档很多) 环境搭建: ...
- Ubuntu系统下arm-linux-gcc交叉编译环境搭建过程
搭建所需环境Linux版本:Ubuntu 14.10 交叉编译器版本:arm-linux-gcc-4.4.3资源链接 何为交叉编译环境搭建交叉编译环境,即安装.配置交叉编译工具链.在Ubuntu环境下 ...
- YA157C交叉编译环境搭建
目录 1.开发板简介 3.主机搭建交叉编译环境 4.编译第一个ARM Linux程序--Hello World 5.在开发板上运行Hello World程序 6.ssh登录开发板 7.注意 8.she ...
随机推荐
- Maven项目中java类报错-Cannot resolve symbol
电脑蓝屏了,强制重启之后再打开IDEA里面的项目,所有Java类文件都在报Cannot resolve symbo错误,可以确定所有依赖的包都有引用且jar包没有冲突. 经查询找到这个解决方法: 在I ...
- 获取Activity的返回参数
一.新建一个空的工程 二.在主界面中添加一个按钮和一个TextView组件 三.新建一个空的activity,命名为TheAty,并添加一个按钮和一个EditText组件 四.重写TheAty的源代码 ...
- Epoll 实例
服务端调试: [test@cs2 epoll]$ g++ epoll_server.cpp -o epoll_server -lpthread [test@cs2 epoll]$ ./epoll_se ...
- 一个高性能RPC框架的连接管理
既然说连接,先对EpollServer的连接管理做个介绍吧.客户端与服务器一次conn,被封装成为Connection类在服务器进行管理. 服务器连接有三种类型,分别为: enum EnumConne ...
- LAMP环境运行中为PHP添加CURL模块
这里是自己遇到的问题记录并总结 1.—— : LAMP环境所需源码包在 /websrc 下 [保存了WEB环境所需的各种tar.gz 源码包]命名为资源目录 2.—— : LAMP环境源码包统一解压到 ...
- BJOI2019 游记
BJOI 2019 游记 Day 1 开场拿到 \(T1\) 发现可以转成求平均 \(log\) 直接 \(AC\) 自动机上 \(Dp\) 一波即可 \(T2\) 发现是到数论神仙题,大概能想到要用 ...
- python库之_thread
官方参考文档:https://docs.python.org/3.7/library/_thread.html _thread库方法 (1) _thread.error (2)_thread.Lock ...
- C# chart控件运用
为了弄一个实时数据显示的窗口,最近一周时间都耗在这个控件上了,属性有点多(下面列的是一些常用的) 后来干脆写代码把他们封装起来,各个chart直接来调用它,省得到属性里面去设置. chart内的一些元 ...
- lvds配置
基于Altera FPGA的LVDS配置应用一例 在特权同学发表博文<Cyclone III的LVDS接口注意事项>后,不少网友发邮件询问LVDS具体应用的一些问题.这些网友,归根到底,估 ...
- LOJ10042 收集雪花
题意 不同的雪花往往有不同的形状.在北方的同学想将雪花收集起来,作为礼物送给在南方的同学们.一共有 n 个时刻,给出每个时刻下落雪花的形状,用不同的整数表示不同的形状.在收集的过程中,同学们不希望有重 ...