東川印記

一本東川,笑看爭龍斗虎;寰茫兦者,度橫佰昧人生。

android源码编译之03编译内核(build kernel)

2015年3月20日星期五



基于上一个android5.0版源码编译之02功能修改,里面编译了android-goldfish-2.6.29并成功应用 于android2.1的模拟器。

现在要搞4.4.2的源码,编译相应的内核。
依据之前的,当前已经执行了
git clone https://android.googlesource.com/kernel/goldfish.git
1,查看分支
  1. senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ git branch -a
  2.   android-3.10
  3. * android-3.4
  4.   android-goldfish-2.6.29
  5.   master
  6.   remotes/origin/HEAD -> origin/master
  7.   remotes/origin/android-3.10
  8.   remotes/origin/android-3.4
  9.   remotes/origin/android-goldfish-2.6.29
  10.   remotes/origin/android-goldfish-3.10
  11.   remotes/origin/android-goldfish-3.4
  12.   remotes/origin/linux-goldfish-3.0-wip
  13.   remotes/origin/master
2,检出目标分支并创建本地分支,自动切换
  1. senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ git checkout -b android-goldfish-3.4 remotes/origin/android-goldfish-3.4
  2. 分支 android-goldfish-3.4 设置为跟踪来自 origin 的远程分支 android-goldfish-3.4。
  3. 切换到一个新分支 'android-goldfish-3.4'

3,查看当前的分支情况
  1. senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ git map-branches
  2. origin/android-3.10
  3.   android-3.10
  4. origin/android-3.4
  5.   android-3.4
  6. origin/android-goldfish-2.6.29
  7.   android-goldfish-2.6.29
  8. origin/android-goldfish-3.4
  9.   android-goldfish-3.4 *
  10. origin/master
  11.   master
花花绿绿真好看


4,配置交叉编译环境

之前5.0这个东西是arm-eabi-4.8,下了4.4.2之后这个的版本是4.7和4.6
  1. senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ export PATH=/home/senrsl/android/source/WORKING_DIRECTORY/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin:$PATH

5,配置参数并编译
senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ export ARCH=arm
senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ export SUBARCH=arm
senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ export CROSS_COMPILE=arm-eabi-
senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ make goldfish_armv7_defconfig
#
# configuration written to .config
#
senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ make
。。。。
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
senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$
编译完成

6,应用于android模拟器
  1. senrsl@senrsl-ubuntu:~/android/source/WORKING_DIRECTORY$ emulator -kernel /home/senrsl/android/source/kernel/goldfish/arch/arm/boot/zImage &
启动成功,查看当前内核

命令行查看
  1. senrsl@senrsl-ubuntu:~$ adb shell
  2. root@generic:/ # cd /proc
  3. root@generic:/proc # cat version
  4. Linux version 3.4.67-gea97df6 (senrsl@senrsl-ubuntu) (gcc version 4.7 (GCC) ) #3 PREEMPT Fri Mar 20 15:35:41 CST 2015
说明编译成功且正确。




附录
1,git查看分支
①git查看所有分支
  1. senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ git branch -a
  2.   android-3.10
  3. * android-3.4
  4.   android-goldfish-2.6.29
  5.   master
  6.   remotes/origin/HEAD -> origin/master
  7.   remotes/origin/android-3.10
  8.   remotes/origin/android-3.4
  9.   remotes/origin/android-goldfish-2.6.29
  10.   remotes/origin/android-goldfish-3.10
  11.   remotes/origin/android-goldfish-3.4
  12.   remotes/origin/linux-goldfish-3.0-wip
  13.   remotes/origin/master

②git查看本地分支
  1. senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ git branch
  2.   android-3.10
  3. * android-3.4
  4.   android-goldfish-2.6.29
  5.   master
③git查看本地分支与远程分支映射关系
  1. senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ git map-branches
  2. origin/android-3.10
  3.   android-3.10
  4. origin/android-3.4
  5.   android-3.4 *
  6. origin/android-goldfish-2.6.29
  7.   android-goldfish-2.6.29
  8. origin/master
  9.   master

2,编译完内核启动虚拟器无法启动
之前编译的时候使用的是
  1. senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ make goldfish_defconfig
编译完启动不了,emulator一直黑屏,然后想手动创建个 -avd试试,建完后发现了这么个问题

之前2.1的调用成功了goldfish2.6的那个arm,是以为他本身支持arm,选择创建4.4.2之后,在CPU里没有ARM,再去看 2.1的选项里,只有ARM,这就说明了问题。
于是重新编译一个
  1. senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ make goldfish_armv7_defconfig
  2. senrsl@senrsl-ubuntu:~/android/source/kernel/goldfish$ make
执行成功后,emulator就启动起来了

2015年03月20日15:47:15--
senRsl
2015年03月20日14:17:21

没有评论 :

发表评论