Ubuntu11.10下編譯android內核源碼 – Android移動開發技術文章_手機開發 Android移動開發教學課程

在之前的文章中,為讀者介紹瞭《Ubuntu Linux下android源碼下載方法》、《Ubuntu11.10下配置android的Eclipse開發環境》、配置過程中遇到的一些問題,以及《Ubuntu11.10下android源碼4.0.3的編譯方法》。本文繼續為讀者介紹Ubuntu11.10下android內核的編譯方法。
 
編譯android源碼時並不會自動編譯android內核,因此需要手動編譯這部分代碼。編譯內核所用的時間比編譯android源碼要少得多,隻需一會就編譯完成。
 
1、確定內核版本
 
進入存放android內核源碼的kernel目錄,我下載瞭common.git與goldfish.git,以goldfish為例,進入goldfish目錄,在命令行輸入以下命令,顯示所有分支及當前所在的分支:
 
1
$git bransh -a
 輸出結果如下:
 
1
* master
2
  remotes/origin/HEAD -> origin/master
3
  remotes/origin/android-goldfish-2.6.29
4
  remotes/origin/master
 輸入以下命令選擇當前的最新版本(goldfish為android的模擬器描述的CPU):
 
1
$git checkout -b android-goldfish-2.6.29 origin/android-goldfish-2.6.29
 再次輸入命令git branch -a,將會顯示剛剛選擇的最新分支,表示目前工作在這個被選擇的分支上,輸出如下:
 
1
* android-goldfish-2.6.29
2
  master
3
  remotes/origin/HEAD -> origin/master
4
  remotes/origin/android-goldfish-2.6.29
5
  remotes/origin/master
 2、設定環境變量
 
在編譯android內核時,需要使用交叉編譯器。在所下載的android源碼樹中有一個prebuilt文件夾,包含瞭編譯內核所需的交叉編譯工具,因此要將其設置到環境變量中去,以方便使用。打開用戶目錄下的.bashrc文件,在後面添加如下代碼
 
1
export PATH=$PATH:~/android/source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin
2
export ARCH=arm
 保存並退出,通過以下命令在用戶目錄下進行更新。
 
1
$source ~/.bashrc
 由於有可能在添加之後沒有及時更新,導致在編譯時提示錯誤,如找不到交叉編譯工具目錄等,因此這裡需要更新(如果加入瞭環境變量仍在編譯時提示找不到交叉編譯工具目錄,可以嘗試多更新幾次)。
 
3、設定交叉編譯參數
 
在編譯之前還需要設定編譯時所使用的交叉編譯參數。
 
首先,打開android/kernel/goldfish/目錄下的Makefile文件,找到CROSS_COMPILE變量,將其指向android源碼提供的prebuilt中的arm-eabi編譯器,代碼如下所示:
 
1
CROSS_COMPILE   ?= arm-eabi-
 之後找到如下代碼:
 
1
LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
2
                 $(call ld-option, -Wl$(comma)–build-id,))
 將其刪除或註釋掉(建議註釋掉即可,以備以後會使用到),並添加一個空的LDFLAGS_BUILD_ID定義,如下所示:
 
1
#LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
2
#                $(call ld-option, -Wl$(comma)–build-id,))
3
LDFLAGS_BUILD_ID =
 4、編譯內核源碼
 
設置完之後,就是編譯android內核源碼瞭,進入goldfish目錄,輸入以下命令
 
1
$make goldfish_defconfig
2
$make
 第一條命令為編譯時的默認配置文件。如果不執行這條命令,編譯時可能會提示“找不到配置文件”。第一條命令執行完後,會在goldfish目錄下生成一個.config文件。
 
之後便是一段時間的等待瞭。。。時間不長,一會即可編譯好,比編譯android源碼時間要少得多。
 
5、編譯完成之後,會在“kernel/arch/arm/boot/”目錄下生成名為zImage的文件。

發佈留言