Busybox想必大家都很熟悉,但是其是基于glibc/uclibc开发,而android采用bionic,另外dns有特殊处理。在android的移植,实际上已经有人做过了,比如https://github.com/CyanogenMod.
但是他的移植不够好,主要有两点:
1. 基于eclair的,虽然在froyo下没什么问题。比如froyo下的bionic实际上已经有了regex了,而他依然选择第三方库的。此外种种,不一而足。
2. 无法自定义。我们知道,busybox的makefile和linux内核一样,具有高度的可配性,从而生成makefile。
Android.mk需要指定LOCAL_SRC_FILES,虽然有LOCAL_GENERATED_SOURCES,但是还是不够灵活。为此,本人增加了一些补丁,来动态获取source.

实际上之前的移植和这相关,是定义gcc的cflags等环境变量,然后生成busybox,和agcc有点类似。
后来本人改为采用Android.mk这种方式了。经历一段时间后,终于基本完成。

在默认defconfig下,仍然有一些无法编译,本人也不想支持这些,所以不会再打补丁。
比如init, syslogd, loginutils,及rpc服务,共享内存,utmp/wtmp的几个。
考虑到这些基本在android里基本没有用,就直接去除了。
禁用的选项请参考Android.in。

不再多说,如果各位有心,请关注以下网址:
http://github.com/liudongmiao/busybox-android

另外,对bionic的要求是froyo以上,虽然里面有支持eclair,但只限于动态链接的情况。
目前静态链接编译bionic后,大约800多k,比起之前用glibc静态链接1.8M,已经很小很小了。

其实上面已经分析过移植busybox的两种可能。
一是使用busybox里内建的makefile,比如你使用make menuconfig,但是编译时需要指定很多环境变量。
二是重新写适合busybox编译的Android.mk,然后直接运行make APP-busybox就可以了。

现在这里说一下运行我这个的方式:
1. 请确保bionic是eclair+的版本,最好是froyo或master (本人只在froyo下测试)
2. 默认使用静态链接,如果目标平台是eclair并要支持动态链接,请... (呃,真的有必要说方法么,哈?)

shell>> make APP-busybox
这个将使用默认的config,即defconfig,如果需要修改,请这样运行:
1. 到busybox目录下运行make O=/path/to/busybox_intermediates menuconfig (生成config)
然后运行make APP-busybox

更多相关文章

  1. android动效开篇
  2. Android(安卓)App异常检测及处理
  3. Android(安卓)ListView 如何 更改字体颜色,字体类型等参数
  4. 在线看Android系统源码,AndroidXRef的简易使用方法
  5. Android内存泄漏总结
  6. Android(安卓)app调用动态库so
  7. 动态加载Dex的原理
  8. Android-使用AutoCompleteTextView进行动态匹配
  9. 【Android】利用adt-bundle在Linux下轻松搭建Android开发环境与H

随机推荐

  1. Programmatically Injecting Events on A
  2. Pull To Refresh for Android
  3. C++开发安卓、windows下搭建Android(安卓
  4. Android 学习笔记(四):安卓开发权限速查
  5. 一个讲的很好的android SDK 入门网站
  6. Android HAL层HAL_MODULE_INFO
  7. android:uploaddatatoWeb
  8. Android与服务器通信
  9. android获取存储卡使用情况
  10. 毕设---android按钮事件