查看: 1802|回复: 0
打印 上一主题 下一主题

Ubuntu11.10下编译android内核源码

[复制链接]
跳转到指定楼层
沙发
发表于 2015-4-22 18:14:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

1、确定内核版本

进入存放android内核源码的kernel目录,我下载了common.git与goldfish.git,以goldfish为例,进入goldfish目录,在命令行输入以下命令,显示所有分支及当前所在的分支:

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em][size=1em]$git bransh -a



输出结果如下:

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em][size=1em]* master
[size=1em]  remotes/origin/HEAD -> origin/master
[size=1em]  remotes/origin/android-goldfish-2.6.29
[size=1em]  remotes/origin/master



输入以下命令选择当前的最新版本(goldfish为android的模拟器描述的CPU):

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em][size=1em]$git checkout -b android-goldfish-2.6.29 origin/android-goldfish-2.6.29



再次输入命令git branch -a,将会显示刚刚选择的最新分支,表示目前工作在这个被选择的分支上,输出如下:

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em][size=1em]* android-goldfish-2.6.29
[size=1em]  master
[size=1em]  remotes/origin/HEAD -> origin/master
[size=1em]  remotes/origin/android-goldfish-2.6.29
[size=1em]  remotes/origin/master



2、设定环境变量

在编译android内核时,需要使用交叉编译器。在所下载的android源码树中有一个prebuilt文件夹,包含了编译内核所需的交叉编译工具,因此要将其设置到环境变量中去,以方便使用。打开用户目录下的.bashrc文件,在后面添加如下代码

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em][size=1em]export PATH=$PATH:~/android/source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin
[size=1em]export ARCH=arm



保存并退出,通过以下命令在用户目录下进行更新。

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em][size=1em]$source ~/.bashrc



由于有可能在添加之后没有及时更新,导致在编译时提示错误,如找不到交叉编译工具目录等,因此这里需要更新(如果加入了环境变量仍在编译时提示找不到交叉编译工具目录,可以尝试多更新几次)。

3、设定交叉编译参数

在编译之前还需要设定编译时所使用的交叉编译参数。

首先,打开android/kernel/goldfish/目录下的Makefile文件,找到CROSS_COMPILE变量,将其指向android源码提供的prebuilt中的arm-eabi编译器,代码如下所示:

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em][size=1em]CROSS_COMPILE   ?= arm-eabi-



之后找到如下代码:

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em][size=1em]LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
[size=1em]                 $(call ld-option, -Wl$(comma)--build-id,))



将其删除或注释掉(建议注释掉即可,以备以后会使用到),并添加一个空的LDFLAGS_BUILD_ID定义,如下所示:

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em]3

[size=1em][size=1em]#LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
[size=1em]#                $(call ld-option, -Wl$(comma)--build-id,))
[size=1em]LDFLAGS_BUILD_ID =



4、编译内核源码

设置完之后,就是编译android内核源码了,进入goldfish目录,输入以下命令

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em][size=1em]$make goldfish_defconfig
[size=1em]$make



第一条命令为编译时的默认配置文件。如果不执行这条命令,编译时可能会提示“找不到配置文件”。第一条命令执行完后,会在goldfish目录下生成一个.config文件。

之后便是一段时间的等待了。。。时间不长,一会即可编译好,比编译android源码时间要少得多。

5、编译完成之后,会在“kernel/arch/arm/boot/”目录下生成名为zImage的文件。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表