编译android kernel遇到的问题
前段时间下载并make了Android源码,趁这个周末,就打算把kernel的代码也checkout下来,make试试。
当然,我在make kernel面前还是一张白纸。于是就边参考杨丰盛的《Android技术内幕:系统篇》,边在网上搜索方法。
主要参考了以下这位大侠的文章:
http://blog.csdn.net/luoshengyang/article/details/6564592
具体的过程,会在后面附上上述地址文章的内容。这儿只是说说我在整个过程中遇到的问题。
一、关于goldfish
杨丰盛书中说到,最新版本是android-goldfish-2.6.35,可是我执行git branch -a后得到的内容如下:
remotes/origin/HEAD -> origin/android-2.6.36
remotes/origin/android-2.6.35
remotes/origin/android-2.6.36
remotes/origin/android-2.6.37
remotes/origin/android-2.6.38
remotes/origin/android-2.6.39
remotes/origin/android-3.0
remotes/origin/archive/android-2.6.25
remotes/origin/archive/android-2.6.27
remotes/origin/archive/android-2.6.29
remotes/origin/archive/android-2.6.32
remotes/origin/archive/android-gldfish-2.6.29
remotes/origin/archive/android-goldfish-2.6.27
remotes/origin/linux-bcm43xx-2.6.39
remotes/origin/linux-wl12xx-2.6.39
我就想,关它是不是金鱼,先用最新的试试。于是就checkout下来了android-2.6.39。
结果在操作到了meke goldfish_defconfig时,提示找不到文件:arch/arm/configs/goldfish_defconfig。
(后来想了下,是否可以meke defconfig呢?以后有机会试试)
自己也不熟,只能按部就班,重新checkout金鱼了。
再去checkout android-gldfish-2.6.29时,还遇到点问题,就是我已经修改过Makefile问题,结果不让改变branch,没办法,只能回复修改,重新checkout。
二、关于ARCH
注意需要修改Makefile下的ARCH。我参考杨丰盛书中,没有修改该 变量。结果在make goldfish_defconfig时,提示找不到文件arch/x86/configs/goldfish_defconfig。
后来发现,杨丰盛 书中没在Makefile中修改,而是在.bashrc文件中修改了。
而参考网址中是在Makefile文件中修改的。
三 关于PATH
有一步需要修改.bashrc文件中的PATH环境变量。
export PATH=$PATH:~/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
我比着葫芦画瓢,按照自己的Android源码路径,将该语句添加到了.bashrc文件中。结果在make的时候,提示找不到命令arm-eabi-gcc。我到相应路径下找了找,发现arm-eabi-gcc是有的,说明PATH配置不对。
于是就想把PATH的内容打出来看看,执行命令:env | grep PATH,打印出来,发现使用的arm-eabi-4.4.3/bin路径为/root/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin,而真正的路径在home下我的用户的目录中。
干脆改用绝对路径。source ~/.bashrc之后,跳到kernel代码所在目录,然后make,终于一切OK。