编译android源码及遇到的问题

编译android源码,首先当然是下载源码。

在source.android.com中可以方便的找到下载流程。

虽然有现成的方法(GIT&REPO)不过最好还是先熟悉一下这两个工具使用方法最好,否则也会走不少弯路。这里推荐Li Yanrui写的《git使用指南》。

好了,一步一步

 

$git init

 

$repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair   ---------下载  android-2.1版本

 

$repo sync --------- 第一次最好使用repo sync下载完所有的文件

 

正式开始编译,料想不会太复杂吧

 

$ source build/envsetup.sh

$ lunch

选 simulator  ----------我是在emulator上跑的android

$ make

 

....

 

编译完成之后在 out/target/.../generic/目录下生成了  ramdisk.img system.img userdata.img

 

$ emulator -system system.img 

  -data userdata.img

  -ramdisk -ramdisk.img

 

Q&A 下面仅仅记录我在编译之中遇到的问题

 

1. android根据版本推出的先后选择了 java1.5 和  java1.6, 我是直接选择的java 1.6

因此需要修改 build/core/main.mk中的关于java版本判断的部分 改 1.5 -> 1.6

 

2. 编译了一段时间之后出现错误

提示 将警告当成了错了

解决办法  将报错位置的编译选项 -Werror 删除

下面还遇到无法识别的选项 -Wno-override-init  同样删除

3.  GLIBC_2.11 not found

解决办法  http://blog.csdn.net/zhenyongyuan123/archive/2010/12/16/6079717.aspx

 

4. issue "You are attempting to build on a 32-bit system"

    How to fix: 
$ vim build/core/main.mk 
change 
ifneq (64,$(findstring 64,$(build_arch))) 
to 
ifneq (i686,$(findstring i686,$(build_arch))) 
$(warning ************************************************************) 
$(warning You are attempting to build on a 32-bit system.) 
$(warning Only 64-bit build environments are supported beyond froyo/2.2.) 
$(warning ************************************************************) 
$(error stop) 
endif


external/clearsilver/cgi/Android.mk, 
external/clearsilver/java-jni/Android.mk, 
external/clearsilver/util/Android.mk, 
external/clearsilver/cs/Android.mk

change 
LOCAL_CFLAGS += -m64 
LOCAL_LDFLAGS += -m64 
to 
LOCAL_CFLAGS += -m32 
LOCAL_LDFLAGS += -m32

 

...

 

P.S.  交叉编译android kernel

下载android kernel源码

$ git clone git://android.git.kernel.org/kernel/common.git  kernel-common    

 

$ cd kernel-common

 

$ make ARCH=arm goldfish_defconfig .config

 

$ make ARCH=arm CROSS_COMPILE=PREBUILT_PATH/linux-x86/toolchain/arm-esbi/bin/

  ......

  OBJCOPY arch/arm/boot/zImage

 

  Kernel: arch/arm/boot/zImage is ready

这个编译过程基本很顺利,没有遇到什么大问题
使用编译的内核
$ emulator -avd <avd name>  -kernel  ZIMAGE_PATH/zImage  
最后是运行起来的模拟器,我们查看手机信息
显示  Android Version 为AOSP
Kernel Version 为 2.6.27-dirty  还附有xxx@localhost    “xxx”是我的linux id

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值