老罗是用11.04编译android的内核的android-gldfish-2.6.29代码。
而代码树是会变的,使用他的方法,有些地方需要改变才能成功。。。。。
1. 下载goldfish内核代码。
goldfish时Google为android的emulator制作的内核代码,具体百度。。。
$ git clone http://android.googlesource.com/kernel/goldfish.git
结束后出现了
goldfish文件夹,并没有出现common文件夹。。
下载后文件夹的情况为:
Android_4.2.2_SourceCode/kernel/goldfish
这个夹子里面只有一个.git的隐藏文件。
2. 查看分支
$ git branch
$ git branch -a
3. 下载分支
USER-NAME@MACHINE-NAME:~/Android_4.2.2_SourceCode/kernel/goldfish$ git checkout -b android-my-3.4 remotes/origin/android-3.4
将android-3.4新建一个分支名为“android-my-3.4”来下载代码。。
//////////////////////////////////////////////////////////////////////////
编译内核代码设置:
1. 导出交叉编译环境工具目录到$PATH环境变量中去:
USER-NAME@MACHINE-NAME:~/Android_4.2.2_SourceCode/kernel/goldfish$ export PATH=$PATH:/home/USER-NAME/Android_4.2.2_SourceCode/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin
/home/USER-NAME/Android_4.2.2_SourceCode/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin
因为make的时候会自动部全为arm-eabi-gcc,而该文件在那个bin夹子下面,大家可以自己去看。。。
3. 编译前的配置
USER-NAME@MACHINE-NAME:~/Android_4.2.2_SourceCode/kernel/goldfish $ make goldfish_armv7_defconfig
这里需要根据本机arm的版本来配置。。。
老罗使用的是32位的系统,而我的是64位的系统。这里要注意。。。
4. make编译
USER-NAME@MACHINE-NAME:~/Android_4.2.2_SourceCode/kernel/goldfish $ make -j4
按照这些步骤,我也成功了。哦也。。。
SYSMAP System.map SYSMAP .tmp_System.map OBJCOPY arch/arm/boot/Image Kernel: arch/arm/boot/Image is ready AS arch/arm/boot/compressed/head.o GZIP arch/arm/boot/compressed/piggy.gzip AS arch/arm/boot/compressed/piggy.gzip.o CC arch/arm/boot/compressed/misc.o CC arch/arm/boot/compressed/decompress.o CC arch/arm/boot/compressed/string.o SHIPPED arch/arm/boot/compressed/lib1funcs.S AS arch/arm/boot/compressed/lib1funcs.o SHIPPED arch/arm/boot/compressed/ashldi3.S AS arch/arm/boot/compressed/ashldi3.o LD arch/arm/boot/compressed/vmlinux OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready
5. 在后台指定内核文件启动模拟器
USER-NAME@MACHINE-NAME:~/Android_4.2.2_SourceCode$ emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage
这样就OK了。。。。
6. 另外开启一个终端
$ adb shell root@android:/ # cd proc root@android:/proc # cat version
root@android:/proc # cat version
Linux version 2.6.29-ge3d684d-dirty (hwh@Mountain) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #2 Sat Jun 29 16:51:23 CST 2013
哎呀,我也成功了。。。。Very Good~~~
这次编译Android源代码以及内核,总结。
困难:
1. ubuntu12.04 64bit无线有时掉线,对于需要下载大量包的情况很不利。而我这很容易获得无线条件,但是有线条件难以获取。多少就想放弃。
2. 编译android源代码的时候需要预下载一些软件包,但是网上提供的例程很多都没有办法完全下载成功。
3. 有关Git的用法,不会用Git真是麻烦,
4. 我确定我按照网上提供的办法下载编译内核,但是就是不对。
但是最后考虑到他人的编译环境和我不同,所以需要考虑一下。另外Git里面代码路径也是会变化的,这也是需要考虑。。。。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
参考文章1:
地址:http://blog.csdn.net/luoshengyang/article/details/6564592
在前一篇文章提到,从源代码树下载下来的最新Android源代码,是不包括内核代码的,也就是Android源代码工程默认不包含Linux Kernel代码,而是使用预先编译好的内核,也就是prebuilt/android-arm/kernel/kernel-qemu文件。那么,如何才能DIY自己的内核呢?这篇文章一一道来。
一. 首选,参照前一篇在Ubuntu上下载、编译和安装Android最新源代码准备好Android源代码目录。
二. 下载Linux Kernel for Android源代码。
1. 使用GIT工具下载,执行以下命令:
USER-NAME@MACHINE-NAME:~/Android$ mkdir kernel