同步编译android-3.4内核代码,运行android4.2.2

     在我们通过repo这个封装了git的工具同步完android的源代码后,会发现kernel文件夹下面是空的,打开android的工程主页,https://android.googlesource.com/?format=HTML,会发现其实在kernel目录下是有源代码的,所以我们再次用git工具同步一下kernel下的源代码即可。

    kernel目录下有很多个处理器的内核源代码,我们以comm为例:


输入命令:$ git clone https://android.googlesource.com/kernel/common


然后在kernel文件夹下面会生成一个commn文件夹,进入这个文件夹:

cd commn

ls -al

会发现多了个.git的目录


刚才下载的源代码都在这个.git目录下面,我们现在来check out3.4的内核代码,

$ git checkout remotes/origin/android-3.4

等待check结束,你就能看到commn目录下多了很多文件:


这就是kernel下面commn目录中3.4内核的源代码了

https://android.googlesource.com/kernel/common/+/android-3.4


下面我们来编译内核:

首先导出环境变量:

$ export PATH=$PATH:~/WORKING_DIRECTORY/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/

(具体路径可能会因为源代码版本不一样而改变)

在commn目录下修改Makefile文件:

ARCH       ?= $(SUBARCH)
CROSS_COMPILE  ?= $(CONFIG_CROSS_COMPILE:"%"=%)
改成:

ARCH        ?= arm
CROSS_COMPILE   ?= arm-eabi-


不这样修改会默认以x86位体系编译


然后配置内核,在arch/arm/configs/ 目录下有若干配置文件,选择一个来进行编译:



$ make s5p64x0_defconfig

原理就是拷贝s5p64x0_defconfig文件到commn下保存为.config


$ make 



成功获得zImage镜像.这个内核是运行在s5p64x0处理器下的,如果想编译运行在模拟器下的内核需要下载编译goldfish内核进行编译,和commn内核一个道理。

goldfish内核

1.取得goldfish内核:


2. ls遍历~/WORKING_DIRECTORY/kernel/goldfish/arch/arm/configs,发现3.4中没有goldfish_armv7_defconfig文件,

    使用命令make goldfish_armv7_defconfig会提示找不到配置文件。

     我们Google’s Gerrit查找最新的补丁,搜索kernel/goldfish branch:android-goldfish-3.4关键字,

会得到很多没融合进内核的补丁:https://android-review.googlesource.com/#/q/kernel/goldfish+branch:android-goldfish-3.4,n,z

选取最新的进行pull操作,取回本地(查看这些搜索记录你会发现,这个问题在2012年10月4日的一个补丁已经修正了)

    

git pull https://android.googlesource.com/kernel/goldfish refs/changes/87/51687/3

3.编译

   先指定交叉编译工具连:

export PATH=$PATH:~/WORKING_DIRECTORY/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/
然后make(前面修改过makefile文件指定arch和cross_compile, 没修改Makefile文件  就要指定 ARCH=arm CROSS_COMPILE=arm-eabi-),

得到zImage镜像。


4.启动模拟器:

首先初始化模拟器运行环境:

$ source build/envsetup.sh

$ lunch full-eng


指定内核,启动模拟器:

emulator -kernel ~/WORKING_DIRECTORY/kernel/goldfish/arch/arm/boot/zImage &



使用adb来测试,看内核版本



有关android 4.2.2系统的编译问题,同理请参考http://blog.csdn.net/gexueyuan/article/details/7772387,系统版本不一样

但是编译原理一样。


参考:http://source.android.com/source/building-kernels.html

           http://www.linuxidc.com/Linux/2012-01/50765.htm

http://yaapb.wordpress.com/2012/09/23/get-the-brand-new-3-4-android-kernel-working-for-the-x86-emulator/


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值