Android的交叉编译工具
2011年04月28日
一直以来自己对Android的交叉编译工具认识的不够清晰,通常在Linux上编译应用程序时通常需要安装交叉编译器,但是移植Android很长时间了,自己的虚拟机里面也没有安装任何的交叉编译工具,Android也能顺利的编译通过,自己从网上查了相关的资料,才弄明白了这些。
Android所用的Toolchain(即交叉编译工具链)可从下面的网址下载: http://android.kernel.org/pub/android-toolchain-20 081019.tar.bz2。
如果下载了完整的Android项目的源代码,则可以在"/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin"目录下找到交叉编译工具,比如Android所用的arm-eabi-gcc-4.2.1。 Android并没有采用glibc作为C库,而是采用了Google自己开发的Bionic Libc,它的官方Toolchain也是基于Bionic Libc而并非glibc的。这使得使用或移植其他Toolchain来用于Android要比较麻烦:在Google公布用于Android的官方Toolchain之前,多数的Android爱好者使用的Toolchain是在http://www.codesourcery.com/gnu_toolchains/arm/dow nload.html 下载的一个通用的Toolchain,它用来编译和移植Android 的Linux内核是可行的,因为内核并不需要C库,但是开发Android的应用程序时,直接采用或者移植其他的Toolchain都比较麻烦,其他Toolchain编译的应用程序只能采用静态编译的方式才能运行于Android模拟器中,这显然是实际开发中所不能接受的方式。目前尚没有看到说明成功移植其他交叉编译器来编译Android应用程序的资料。
与glibc相比,Bionic Libc有如下一些特点:
- 采用BSD License,而不是glibc的GPL License; - 大小只有大约200k,比glibc差不多小一半,且比glibc更快;
- 实现了一个更小、更快的pthread;
- 提供了一些Android所需要的重要函数,如"getprop", "LOGI"等;
- 不完全支持POSIX标准,比如C++ exceptions,wide chars等;
- 不提供libthread_db 和 libm的实现
另外,Android中所用的其他一些二进制工具也比较特殊:
- 加载动态库时使用的是/system/bin/linker而不是常用的/lib/ld.so;
- prelink工具不是常用的prelink而是apriori,其源代码位于" /build/tools/apriori"
- strip工具也没有采用常用的strip,即"/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin"目录下的arm-eabi-strip,而是位于/out/host/linux-x86/bin/的soslim工具。
本文章摘自http://www.top-e.org/jiaoshi/html/?151.html,感谢网友这篇文章,对android的编译器有了一定的认识。
发表评论
-
hash 表
2012-01-20 12:20 527hash 表 2011年04月07日 hash 表是基于 ... -
GNU/Linux 编程中的定时器
2012-01-20 12:20 1644GNU/Linux 编程中的定时器 2011年06月08日 ... -
Linux设备驱动开发入门――Hello world
2012-01-20 12:20 783Linux设备驱动开发入门――Hello world 201 ... -
mod_python3.2.8中文手册(1、2、3)
2012-01-19 17:01 918mod_python3.2.8中文手册(1、2、3) 201 ... -
Python2.6+PyQt4.8+eric4+汉化+开发教程
2012-01-19 17:01 1498Python2.6+PyQt4.8+eric4+汉化+开发教程 ... -
简明python教程(下)
2012-01-19 17:01 701简明python教程(下) 2010 ... -
玩手机的都来看,教祢认识Python
2012-01-19 17:01 556玩手机的都来看,教祢认识Python 2010年08月03日 ... -
简明python教程(上)
2012-01-19 17:00 640简明python教程(上) 2010年06月11日 1、 ... -
VB窗口图表化
2012-01-17 06:45 585VB窗口图表化 2011年04月20日 '本模块为实现托 ... -
VB 两小时
2012-01-17 06:45 515VB 两小时 2011年09月25日 Option Ex ... -
使用 Shell 属性及方法
2012-01-17 06:45 1002使用 Shell 属性及方法 2 ... -
VB关机代码
2012-01-17 06:45 653VB关机代码 2011年07月20日 .首先在Form1 ... -
VB 打开网络连接
2012-01-17 06:45 771VB 打开网络连接 2011年10月29日 Option ... -
越南签证、柬埔寨签证价格表
2012-01-16 05:35 601越南签证、柬埔寨签证价格表 2011年03月31日 20 ... -
越南旅游
2012-01-16 05:35 476越南旅游 2009年11月17日 a.越南驻中国大使馆: ... -
我国驻越南的外交机构
2012-01-16 05:35 545我国驻越南的外交机构 2011年03月23日 中国驻越南 ... -
中国驻各国大使馆电话及地址
2012-01-16 05:35 677中国驻各国大使馆电话及地址 2009年08月13日 ... -
各国驻香港大使馆
2012-01-16 05:35 583各国驻香港大使馆 2011年05月10日 香港机票网 ...
相关推荐
Windows平台下 NDK 提取出来的 Android 平台交叉编译工具 可以直接编译生成Android下的可执行程序,或者库。
本文简要介绍了如何安装Android NDK的C/C++语言开发套件,并介绍了如何创建一个独立的ARM交叉编译工具链。通过该工具链接可以交叉编译Android上的C语言程序,也可以用来编译Android Linux内核。文中举例介绍了如何...
android内核交叉编译工具,下载下来之后一般是存放到/usr/lib目录中,然后修改一下环境变量,写到/etc/profile里面去,参考jdk的写法。
Android NDK 交叉编译工具 Android NDK 交叉编译工具
文档包含完整的例子,交叉编译还提供了下载链接,保证有用,不成功可...centos7下进行aarch64(arm64)交叉编译工具安装 iperf3交叉编译并在Android下运行 iperf3带宽TCP、UDP性能测试 怎么5分变6分了,不知道为什么
从android-ndk-r9d-linux-x86_64.tar.bz2 NDK提取的toolchain
arm平台下使用ndk工具交叉编译python,用于android系统;android-arm平台ndk交叉编译python
linux环境下的交叉编译工具链,用在android开发 ,我是用在ubuntu14.04.5中的,写有详细的安装步骤。
交叉编译arm Linux环境下的android-tools-adb工具,本资源包含了完整的Ubuntu1604平台下的android-tools-adb源码包,openssl源码包,zlib源码包。以及完整的编译说明和指导,按照说明操作,可以轻松生成arm平台下可...
Python 3安卓这是一组实验性的构建脚本,可以针对ARM Android设备交叉编译Python 3。 该项目不再维护。 请查看和fork,以继续在Android 3上进行Python 3的开发。用法make clean 。 对于您希望构建的每个NDK / API...
交叉编译工具arm-2009q1-203-arm-none-linux-gnueabi
React Native App中mips交叉编译工具问题,NDK r17c之后的版本中,将mips和mips64的交叉编译工具移除
iperf 2 ,3 的android 平台移植笔记,ndk 选择,交叉编译工具链的编译和配置,编译结果的验证,常见错误的处理方法。工作实践中的总结。
amlogic 编译步骤,比智能手机编译步骤相对复杂一些
为macos构建swift-android交叉编译工具链的自动化脚本
很好用的Linux-android交叉编译工具链,可以用来浮点运算和编译.so库来供android JAVA端来调用!
#export CC="arm-linux-androideabi-gcc --sysroot=$SYSROOT" export CC="arm-linux-gnueabihf-gcc --sysroot=$SYSROOT" export CXX="arm-linux-gnueabihf-g++ --sysroot=$SYSROOT" export PATH=$TOOLCHAIN_HOME/bin...
android linux交叉编译工具aarch64-linux-android-4.9版本!需要的可以下载!
Andorid:根据脚本提示下载交叉编译工具,在Linux系统上交叉编译出Andorid平台文件 MacOS:直接在Mac系统上运行此脚本 iOS:根据脚本提示下载交叉编译工具,在Mac系统上交叉编译出iOS平台文件 Windows:在windows...
交叉编译工具 III . configure 脚本及帮助命令 IV . 配置 configure 脚本 V . 输出目录配置 VI . 函数库配置 VII . 程序配置选项 VIII . 组件配置选项 IX . 编码配置 X . 交叉编译配置 ( 重点 ) XI . 交叉...