歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 如何在32位Ubuntu 11.10 下編譯Android 4.0.1源碼和goldfish內核

如何在32位Ubuntu 11.10 下編譯Android 4.0.1源碼和goldfish內核

日期:2017/2/28 16:01:09   编辑:Linux教程

一 准備工作

1 安裝java sdk 6

(1)從jdk官方網站http://www.Oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html下載 jdk-6u29-linux-i586.bin文件。

(2)執行jdk安裝文件

$ chmod a+x jdk-6u29-linux-i586.bin 
$ jdk-6u29-linux-i586.bin

(3)配置jdk環境變量

$ sudo vim /etc/profile

#JAVA EVIRENMENT
export JAVA_HOME=/usr/lib/java/jdk1.6.0_29
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

保存後退出編輯,並重啟系統。


2 安裝依賴包

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils


3 用repo工具下載源碼

(1)初始化repo

$ cd ~
$ mkdir bin
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo >~/bin/repo
$ chmod a+x ~/bin/repo
$ export PATH=$PATH:~/bin(導出環境變量)

(2)下載Android最新源碼

$ mkdir android
$ cd android
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
...(輸入用戶名和郵箱名)
$ repo sync -j5
...(此處用5個線程開始下載源碼,下載過程及其漫長,需要耐心等待)


二 編譯源碼

1 開始編譯

$ source build/envsetup.sh 
including device/samsung/maguro/vendorsetup.sh
including device/samsung/tuna/vendorsetup.sh
including device/ti/panda/vendorsetup.sh
including sdk/bash_completion/adb.bash
$ make -j4(此處用4個線程編譯)


編譯完成後,會看到類似的輸出:

Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img
Installed file list: out/target/product/generic/installed-files.txt


2 編譯遇到的問題

編譯錯誤:

<命令行>:0:0: 錯誤: “_FORTIFY_SOURCE”重定義 [-Werror]

<built-in>:0:0: 附注: 這是先前定義的位置

cc1plus:所有的警告都被當作是錯誤

make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] 錯誤 1


原因:

因機器上的gcc版本過高,需替換成4.4.6重新進行編譯。

解決方法:

1)安裝4.4版本的gcc 和g++

$ sudo apt-get install gcc-4.4
$ sudo apt-get install g++-4.4

2)設置gcc版本,使gcc鏈接到gcc-4.4

$ ls -l /usr/bin/gcc*

lrwxrwxrwx 1 root root 7 2011-11-01 23:56 /usr/bin/gcc -> gcc-4.6

-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4

-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6

$ cd /usr/bin
$ sudo mv gcc gcc.bak
$ sudo ln -s gcc-4.4 gcc

3)設置g++版本,使g++鏈接到g++-4.4

$ sudo mv g++ g++.bak
$ sudo ln -s g++-4.4 g++

4)設置完畢後,重新進行編譯即可


3 從模擬器啟動編譯後的鏡像文件


1)設置環境變量:

export PATH=~/android/out/host/linux-x86/bin:$PATH
export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic

其中linux-x86/bin存放模擬器emulator工具,product/generic存在編譯後的鏡像文件。

2)啟動模擬器

$ emulator
emulator: WARNING: system partition size adjusted to match image file (162 MB > 66 MB)

啟動後的截圖:

Copyright © Linux教程網 All Rights Reserved