红联Linux门户
Linux帮助

Ubuntu上编译Android(Linux Kernel)内核源码

发布时间:2015-12-26 09:39:52来源:linux网站作者:Storm-Shadow

我就直接开门见山了哈,本文介绍如何在 Ubuntu 上编译 Android 的 Linux 内存源码。在此之前肯定要先下载到 Android 系统源码和 Linux Kernel 源码了。当然我是有工具的(Astrill,有点小贵,一年要 70 多刀吧),如果你们没有好的工具的话,可以直接从我网盘上下载。
http://pan.baidu.com/s/1i4xe1G5(Andrid 系统源码 android-2.3.7_r1.7z)
http://pan.baidu.com/s/1pJVNQiR(Andrid 系统源码 android-4.3_r1.7z)
(Android Linux Kernel 源码 kernel.zip,这个没上传完,明天上传完再更新吧)


Ubuntu14.04 Android 源码编译

如果可以翻墙的话,随便找个目录,执行下面的命令就行了
mkdir kernel
cd kernel  
git clone https://android.googlesource.com/kernel/goldfish.git
下载完成后,在 kernel 目录下会有一个 goldfish 目录,然后执行命令
lion@lo:~/storm/android-dev/kernel$ cd goldfish
lion@lo:~/storm/android-dev/kernel/goldfish$ git branch -a
* (detached from origin/android-goldfish-2.6.29)
master
remotes/origin/HEAD -> origin/master
remotes/origin/android-3.10
remotes/origin/android-3.18
remotes/origin/android-3.4
remotes/origin/android-goldfish-2.6.29
remotes/origin/android-goldfish-3.10
remotes/origin/android-goldfish-3.10-l-mr1-dev
remotes/origin/android-goldfish-3.10-m-dev
remotes/origin/android-goldfish-3.18-dev
remotes/origin/android-goldfish-3.4
remotes/origin/android-goldfish-3.4-l-mr1-dev
remotes/origin/linux-goldfish-3.0-wip
remotes/origin/master


可以看到里边有很多东西,我们需要的是适用于模拟器的内存,所以执行命令
git checkout remotes/origin/android-goldfish-2.6.29

这个命令执行完成后,就得到 kernel 的源码了,接着下一步导出交叉编译工具目录到 $PATH 环境变量中
export PATH=$PATH:~/home/lion/storm/android-dev/android2.3/android-2.3.7_r1/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin


然后修改 goldfish 目录下的 Makefile 文件的配置
ARCH        ?= arm
CROSS_COMPILE    ?= /home/lion/storm/android-dev/android2.3/android-2.3.7_r1/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
第一个是指编译的体系结构为 arm,第二个是指交叉编译工具的位置,最好写绝对路径,否则可能编译时会报错。arm-eabi- 是编译工具前缀,具体的你到相应目录下看一下就懂了。
接着在 goldfish 目录下执行命令
make goldfish_defconfig
make


编译成功后,会看到以下输出信息:
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.gz
AS      arch/arm/boot/compressed/piggy.o
CC      arch/arm/boot/compressed/misc.o
LD      arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is readytemp
   

接着就可以在模拟器中运行编译好的内核了,在启动前先把模拟器的目录设置到环境变量 $PATH 中:
export PATH=$PATH:/home/lion/storm/android-dev/android2.3/android-2.3.7_r1/out/host/linux-x86/bin
还要设置一下这个
export ANDROID_PRODUCT_OUT=~/storm/android-dev/android2.3/android-2.3.7_r1/out/target/product/generic
最后就可以指定内核文件启动模拟器了:
lion@lo:~/storm/android-dev/kernel/goldfish$emulator -kernel ./arch/arm/boot/zImage &


ok,这时候就可以看到模拟器启动起来了。启动完成后,执行 adb shell 命令,查看一下模拟器有没有使用我们刚编译好的内核来运行
lion@lo:~/storm/android-dev/kernel/goldfish$ adb shell
# cd proc
# cat version
Linux version 2.6.29-g4bb8fa0-dirty (lion@lo) (gcc version 4.4.3 (GCC) ) #5 Fri Dec 25 17:06:13 CST 2015
#

而在没有指定模拟器运行内核的时候,执行 adb shell 查看内核信息得到的结果是这样的(当然在不同的机器上得到的信息可能不同哦)
lion@lo:~/storm/android-dev/android2.3/android-2.3.7_r1/out/target/product/generic$ adb shell
# cd proc
# cat version
Linux version 2.6.29-00261-g0097074-dirty (digit@digit.mtv.corp.google.com) (gcc version 4.4.0 (GCC) ) #20 Wed Mar 31 09:54:02 PDT 2010


大功告成,是不是很简单哈!后续文章,敬请期待哈!


ubuntu15.04编译android源码:http://www.linuxdiyf.com/linux/14709.html

Ubuntu15.04安装Android开发环境 :http://www.linuxdiyf.com/linux/12523.html

64位Ubuntu15.04安装Android Studio教程:http://www.linuxdiyf.com/linux/12081.html

Ubuntu 15.04 Android编译环境:http://www.linuxdiyf.com/linux/11971.html

基于Ubuntu 15.04 LTS编译Android5.1.0源代码:http://www.linuxdiyf.com/linux/11841.html