Ubuntu11.10下編譯android內核源碼

在以前的文章中,爲讀者介紹了《Ubuntu Linux下android源碼下載方法》《Ubuntu11.10下配置android的Eclipse開發環境》配置過程當中遇到的一些問題,以及《Ubuntu11.10下android源碼4.0.3的編譯方法》。本文繼續爲讀者介紹Ubuntu11.10下android內核的編譯方法。linux

編譯android源碼時並不會自動編譯android內核,所以須要手動編譯這部分代碼。編譯內核所用的時間比編譯android源碼要少得多,只需一會就編譯完成。android

一、肯定內核版本git

進入存放android內核源碼的kernel目錄,我下載了common.git與goldfish.git,以goldfish爲例,進入goldfish目錄,在命令行輸入如下命令,顯示全部分支及當前所在的分支:shell

$git bransh -a

 輸出結果以下:bash

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/android-goldfish-2.6.29
  remotes/origin/master

 輸入如下命令選擇當前的最新版本(goldfish爲android的模擬器描述的CPU):工具

$git checkout -b android-goldfish-2.6.29 origin/android-goldfish-2.6.29

 再次輸入命令git branch -a,將會顯示剛剛選擇的最新分支,表示目前工做在這個被選擇的分支上,輸出以下:ui

* android-goldfish-2.6.29
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/android-goldfish-2.6.29
  remotes/origin/master

 二、設定環境變量命令行

在編譯android內核時,須要使用交叉編譯器。在所下載的android源碼樹中有一個prebuilt文件夾,包含了編譯內核所需的交叉編譯工具,所以要將其設置到環境變量中去,以方便使用。打開用戶目錄下的.bashrc文件,在後面添加以下代碼code

export PATH=$PATH:~/android/source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin
export ARCH=arm

 保存並退出,經過如下命令在用戶目錄下進行更新。ip

$source ~/.bashrc

 因爲有可能在添加以後沒有及時更新,致使在編譯時提示錯誤,如找不到交叉編譯工具目錄等,所以這裏須要更新(若是加入了環境變量仍在編譯時提示找不到交叉編譯工具目錄,能夠嘗試多更新幾回)。

三、設定交叉編譯參數

在編譯以前還須要設定編譯時所使用的交叉編譯參數。

首先,打開android/kernel/goldfish/目錄下的Makefile文件,找到CROSS_COMPILE變量,將其指向android源碼提供的prebuilt中的arm-eabi編譯器,代碼以下所示:

CROSS_COMPILE   ?= arm-eabi-

 以後找到以下代碼:

LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
				 $(call ld-option, -Wl$(comma)--build-id,))

 將其刪除或註釋掉(建議註釋掉便可,以備之後會使用到),並添加一個空的LDFLAGS_BUILD_ID定義,以下所示:

#LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
#				 $(call ld-option, -Wl$(comma)--build-id,))
LDFLAGS_BUILD_ID =

 四、編譯內核源碼

設置完以後,就是編譯android內核源碼了,進入goldfish目錄,輸入如下命令

$make goldfish_defconfig
$make

 第一條命令爲編譯時的默認配置文件。若是不執行這條命令,編譯時可能會提示「找不到配置文件」。第一條命令執行完後,會在goldfish目錄下生成一個.config文件。

以後即是一段時間的等待了。。。時間不長,一會便可編譯好,比編譯android源碼時間要少得多。

五、編譯完成以後,會在「kernel/arch/arm/boot/」目錄下生成名爲zImage的文件。

相關文章
相關標籤/搜索