下载源代码
https://source.android.com/source/building-kernels
承接之前编译的android4.4.4的系统源码,所以说是模拟平台,用goldfish
1 | sakura@ubuntu:~$ git clone https://aosp.tuna.tsinghua.edu.cn/kernel/goldfish |
查看各种版本的goldfish
1 | sakura@ubuntu:~$ cd goldfish/ |
我们选择3.4版本
切换分支
1 | sakura@ubuntu:~/goldfish$ git checkout remotes/origin/android-goldfish-3.4 -b goldfish3.4 |
配置交叉编译链
首先,要翻墙,mac及其虚拟机可以参考我的博客
然后获取交叉编译链
1 | sakura@ubuntu:~$ git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6 |
设置环境变量
1 | sakura@ubuntu:~$ sudo vim /etc/profile |
在打开的文件最末添加
1 | export PATH=/home/sakura/arm-eabi-4.6/bin:$PATH |
然后使配置生效
1 | sakura@ubuntu:~$ source /etc/profile |
确认一下
1 | sakura@ubuntu:~$ echo $PATH |
配置编译选项,进行编译
1 | sakura@ubuntu:~/goldfish$ export ARCH=arm |
增加内核编译选项,修改goldfish/.config配置文件
1 | sakura@ubuntu:~/goldfish$ vim /home/sakura/goldfish/.config |
添加以下两行
1 | CONFIG_DEBUG_INFO=y #显示vmlinux符号 |
执行 make 命令进行编译
1 | sakura@ubuntu:~/goldfish$ make |
启动
编译成功后会显示
1 | OBJCOPY arch/arm/boot/Image |
以指定的内核启动模拟器
1 | emulator -verbose -show-kernel -kernel ~/goldfish/arch/arm/boot/zImage |
错误处理
输入emulator的时候报错
1 | No command 'emulator' found, did you mean: |
我至今不知道为什么经常emulator就没了。。但是只要输入lunch,然后再make一下,几分钟就好了……