编译x86_64 android 7.1及goldfish内核
2017-05-18 00:00
483 查看
编译Android系统的教程网上很多,之所以还要写这篇文章,是网上的教程基本都是针对arm,而且Android系统都是2.3,4.0等旧版本。本文要做到的是使用模拟器启动自己编译的x86_64架构android 7.1和goldfish。
我第一次编译的arm64的Android 7.1系统,编译完后可以直接在模拟器中运行,默认使用的内核在Android系统源码目录的prebuild/qemu-kernel中,是源码里自带的,并不是我编译出来的。如果想要进行Android内核方面的开发,需要自己编译内核。
当我准备编译goldfish内核的时候,根据网上的教程,却无法在goldfish的arch/arm64/configs目录下找到需要的goldfish_defconfig文件,有的教程说可以在Android系统启动的情况下,使用adb pull /proc/config.gz,解压得到deconfig文件,但是我启动系统之后,发现里面并没有这个压缩包。纠结之后,重新编译了Android系统源码,架构改为x86_64,但是结果还是一样,goldfish的arch/x86_64/configs里面的x86_64_defconfig完全没有效果,同样没有config.gz这个文件。
继续在网上扒资料,终于发现一篇不一样的文章:编译并测试 android goldfish kernel x86,但是文章使用的Android系统版本好像比较早,CROSS_COMPILE设置的路径我在Android7.1里面找不到,build-kernel.sh的路径同样没有。几乎就要放弃的时候,无意间在Android系统源码目录的prebuilts/qemu-kernel/目录中发现了build-kernel.sh文件。真是柳暗花明又一村啊。于是就有了下面的教程了。
一、编译Android系统
可以从Google或者中国科技大学和清华大学的镜像站下载,我是下载别人下的压缩包,里面没有.git文件夹,体积大大减小,只有4G多:http://pan.baidu.com/s/1o8PVK9O 缺点就是无法利用git切换其他版本。下载之后解压。
编译Android系统的教程网上很多,大家可以参考自己动手编译Android源码(超详细)这篇文章。
以后运行Android系统,只要使用下面的命令:
二、编译goldfish内核
1、下载goldfish源码,我放在~/Desktop/goldfish中:
git clone 的时候会自动创建goldfish文件夹,因此不要先在桌面创建goldfish文件夹,再进入goldfish进行git clone命令。
2、运行Android系统,查看对应的内核版本
3.checkout相应的版本
4.编译内核
必须在goldfish内核源码的顶级目录运行上面的命令,我的为~/Desktop/goldfish。否则无法编译。
编译生成的内核放在/tmp/kernel-qemu/x86_64-3.10.0/kernel-qemu。运行Android系统,在emulator中加入参数,即可运行自己编译的内核了。
三、总结
本文最主要的是说明goldfish内核的编译,基本可以确定,上面编译x86_64 goldfish的步骤,同样可以用来编译arm64 goldfish,只需把相应的参数修改一下即可。但是模拟器在模拟x86_64的Android系统速度上,较arm有很大的提升。
我第一次编译的arm64的Android 7.1系统,编译完后可以直接在模拟器中运行,默认使用的内核在Android系统源码目录的prebuild/qemu-kernel中,是源码里自带的,并不是我编译出来的。如果想要进行Android内核方面的开发,需要自己编译内核。
当我准备编译goldfish内核的时候,根据网上的教程,却无法在goldfish的arch/arm64/configs目录下找到需要的goldfish_defconfig文件,有的教程说可以在Android系统启动的情况下,使用adb pull /proc/config.gz,解压得到deconfig文件,但是我启动系统之后,发现里面并没有这个压缩包。纠结之后,重新编译了Android系统源码,架构改为x86_64,但是结果还是一样,goldfish的arch/x86_64/configs里面的x86_64_defconfig完全没有效果,同样没有config.gz这个文件。
继续在网上扒资料,终于发现一篇不一样的文章:编译并测试 android goldfish kernel x86,但是文章使用的Android系统版本好像比较早,CROSS_COMPILE设置的路径我在Android7.1里面找不到,build-kernel.sh的路径同样没有。几乎就要放弃的时候,无意间在Android系统源码目录的prebuilts/qemu-kernel/目录中发现了build-kernel.sh文件。真是柳暗花明又一村啊。于是就有了下面的教程了。
一、编译Android系统
可以从Google或者中国科技大学和清华大学的镜像站下载,我是下载别人下的压缩包,里面没有.git文件夹,体积大大减小,只有4G多:http://pan.baidu.com/s/1o8PVK9O 缺点就是无法利用git切换其他版本。下载之后解压。
编译Android系统的教程网上很多,大家可以参考自己动手编译Android源码(超详细)这篇文章。
cd ~/Desktop/android-7.1.0_r1 #我存放Android系统源码的目录 source build/envsetup.sh lunch aosp_x86_64-eng #注意,我们编译的是x86_64的系统 make -j4 emulator
以后运行Android系统,只要使用下面的命令:
cd ~/Desktop/android-7.1.0_r1 source build/envsetup.sh lunch aosp_x86_64-eng emulator
二、编译goldfish内核
1、下载goldfish源码,我放在~/Desktop/goldfish中:
cd ~/Desktop git clone git://mirrors.ustc.edu.cn/aosp/kernel/goldfish.git
git clone 的时候会自动创建goldfish文件夹,因此不要先在桌面创建goldfish文件夹,再进入goldfish进行git clone命令。
2、运行Android系统,查看对应的内核版本
3.checkout相应的版本
cd ~/Desktop/goldfish git branch -a #查看版本 git checkout remotes/origin/android-goldfish-3.10-n-dev #checkout
4.编译内核
cd ~/Desktop/goldfish PATH=$PATH:/home/wuqingyi/Desktop/android-7.1.0_r1/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/bin export ARCH=x86_64 export CROSS_COMPILE=x86_64-linux-android- export REAL_CROSS_COMPILE=x86_64-linux-android- #这个必须有,否则终端直接闪退。 /home/wuqingyi/Desktop/android-7.1.0_r1/prebuilts/qemu-kernel/build-kernel.sh --arch=x86_64
必须在goldfish内核源码的顶级目录运行上面的命令,我的为~/Desktop/goldfish。否则无法编译。
编译生成的内核放在/tmp/kernel-qemu/x86_64-3.10.0/kernel-qemu。运行Android系统,在emulator中加入参数,即可运行自己编译的内核了。
cd ~/Desktop/android-7.1.0_r1 source build/envsetup.sh lunch aosp_x86_64-eng emulator -kernel /tmp/kernel-qemu/x86_64-3.10.0/kernel-qemu
三、总结
本文最主要的是说明goldfish内核的编译,基本可以确定,上面编译x86_64 goldfish的步骤,同样可以用来编译arm64 goldfish,只需把相应的参数修改一下即可。但是模拟器在模拟x86_64的Android系统速度上,较arm有很大的提升。
相关文章推荐
- 【转】在MAC系统中编译ANDROID源码与模拟器内核GoldFish
- 如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核
- mac编译Android版本ffmpeg的x86_64架构库
- (OK) 编译,安装 Android-x86_64-Nougat (LineageOS 14.1, Android-7.1.1) for VirtualBox - 100% 成功
- 如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核
- boadcom x86_64 431*系列无线网卡驱动在linux 3.10以上内核编译问题的解决
- Ubuntu 14.04 64位编译Android4.2.2内核源码goldfish
- 如何下载并编译Android 4.0内核源码Goldfish
- Android 4.0 x86 Linux3.0.8内核编译简介/Compile kernel for Android-x86
- Android Goldfish内核编译 + eCryptfs文件加解密系统的内核模块配置
- Linux内核2.6.34.14添加系统调用及编译方法(CentOS-6.4-x86_64)
- Android内核开发 Goldfish Linux Kernel编译及安卓虚拟机测试
- Ubuntu11.04 - 64 bits下编译Android2.2内核
- 编译android2.3.5系统源代码与goldfish2.6.29内核笔记
- 编译android2.3 x86_64 Linux Error: gnu/stub-32.h missing error and solution
- 在MAC系统中编译ANDROID源码与模拟器内核GoldFish
- /mnt/backup/android-x86-7.1-rc1-mptcp/kernel/arch/x86/configs/android-x86_64_defconfig
- (OK) 编译,安装 Android-x86_64-nougat (LineageOS 14.1, Android-7.1.1) for VirtualBox - 90% 成功
- Mac下编译Android以及goldfish内核
- 如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核