Android所用的Toolchain(即交叉编译工具链)可从下面的网址下载:

http://android.kernel.org/pub/android-toolchain-20081019.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(prebuilt)也是基于Bionic Libc而并非glibc的。这使得其他Toolchain来用于Android要比较麻烦。

多数的Linux爱好者使用的Toolchain是在http://www.codesourcery.com/gnu_toolchains/arm/download.html下载的一个通用的Toolchain。
它用来编译和移植Android的Linux内核是可行的,因为内核并不需要C库,但是开发Android应用程序时,直接采用其他的Toolchain都比较麻烦。

而只有编译的应用程序采用静态编译的方式才能运行于Android模拟器中,这显然是实际开发中所不能接受的方式。目前尚没有看到说明成功移植其他交叉编译器来编译Android应用程序的资料。(???)


与glibc相比,Bionic Libc有如下一些特点:
-1 采用BSD License,而不是glibc的GPL License;-2 大小只有大约200k,比glibc差不多小一半,且比glibc更快;-3 实现了一个更小、更快的pthread;-4 提供了一些Android所需要的重要函数,如”getprop”,“LOGI”等;-5 不完全支持POSIX标准,比如C++ exceptions,wide chars等;-6 不提供libthread_db和libm的实现。(???)


另外,Android中所用的其他一些二进制工具也比较特殊:
-1 加载动态库时使用的是/system/bin/linker,而不是常用的/lib/ld.so;-2 prelink工具不是常用的prelink,而是 apriori,其源代码位于build/tools/apriori;-3 strip工具也没有采用常用的strip,即prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin目录下的arm-eabi-strip,而是位于out/host/linux-x86/bin/的soslim工具。


解决底层问题方法:解除Android系统的耦合
1 将Dalvik于bionic以及硬件驱动剥离开2 修改Dalvik以支持标准glibc和GNU/Linux3 把Dalvik当作普通应用程序4 Dalvik可被单独优化和改进






更多相关文章

  1. android性能测试工具Emmagee介绍
  2. Android数据库工具ORM-greenDAO学习
  3. android sharedpreferences工具类
  4. Android 编译环境 - 安装工具包
  5. 搭建arm-linux-gcc交叉编译工具链环境(Android原生(JNI)开发环境
  6. android线程池的封装工具类

随机推荐

  1. 元素的样式来源 基本选择器/上下文选择器
  2. MyCms 自媒体 CMS 系统 v2.4,灵活的辅助属
  3. SSH爆破:是什么?怎么查?怎么预防?
  4. vscode 常用插件
  5. 在Centos 7上配置阿里云Pouch 镜像方法
  6. 一个简易的课程表和注册表单
  7. 阿里云CentOS 镜像配置方法
  8. 阿里云Centos镜像虚拟机安装方法
  9. 意派Epub360丨年终总结H5,这么做才精彩!
  10. 元素样式来源和选择器