Ubuntu 11.10及android4.0.1開發環境安裝

 

Ubuntu 11.10及android4.0開發環境安裝

----------(根據本人安裝時遇到的問題,根據網絡文檔整理而成)

一.  虛擬機及ubuntu11.10環境安裝

1. 軟件準備

從以下的路徑下載ubuntu 11.10,

http://www.ubuntu.org.cn/download/ubuntu/download/

 

準備虛擬機,本人使用vmware 6.5.2 ,新下載的7.0和8.0無法安裝

2.軟件安裝

在vmware中選擇從ISO文件安裝,有個等待的過程。

 

3.安裝vmware tools

 ubuntu.ISO自帶該工具,由於工具是rpm格式,ubuntu11.10的可執行文件的安裝包格式是deb,所以需要轉換。

     alien -d xxx.xxx.rpm     //使用alien將 rpm 格式文件轉成deb

sudo dpkg -i xxx.xxx.deb  //安裝

 

安裝完成後,在/mnt/hgfs目錄下沒有共享的文件目錄,所以需要執行以下的兩步命令,如下:

sudo apt-get install open-vm-dkms

sudo mount -t vmhgfs .host:/ /mnt/hgfs

 

4. 常用命令

打開終端窗口:ctl+alt+t

rpm -ivh xxx.xxx.rpm

 

5.安裝常用的軟件和jdk

需要安裝JDK和相關的軟件:

如下:(Android技術內幕 系統卷)

$sudo apt-get install git-core gnupg valgrind flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zliblg-dev

在實際的操作中有如下的變化:

      Libsdl-dev -------à  libsdl1.2-dev

      Zliblg-dev -------à  沒有找到

附:參考鏈接中的參數

參考: http://source.android.com/source/initializing.html

 

Java 6: for Gingerbread and newer

$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
運行到後面就顯示configuring sun-java6-jre,感覺就像中斷了似的,ok鍵點不了,要先點一下tab鍵才能選ok鍵,剩下的一路next就可以了。

二.Android 源碼和內核的獲取

參考鏈接:http://source.android.com/source/downloading.html

建立目錄 android------|------bin

                                        |------source-----|kernel------|goldfish------|.git

                                                                                                                | kernel詳細代碼

1.獲取repo

1.  $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
2.  $ chmod a+x ~/bin/repo

2. 下載android源碼

$ repo init -u https://android.googlesource.com/platform/manifest
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
執行完以上,會出現提示:
repo initialized in /home/lieye/android/source
然後執行下一步。
$ repo sync

3. 獲取kernel

在source目錄下建立子目錄kernel

    $ git clone https://android.googlesource.com/kernel/common.git
$ git clone https://android.googlesource.com/kernel/goldfish.git
$ git clone https://android.googlesource.com/kernel/msm.git
$ git clone https://android.googlesource.com/kernel/omap.git
$ git clone https://android.googlesource.com/kernel/samsung.git
$ git clone https://android.googlesource.com/kernel/tegra.git

我選擇了

$ git clone https://android.googlesource.com/kernel/goldfish.git

執行以上的命令後,會建立子目錄 goldfish和goldfish/.git , 然後在 goldfish目錄下執行命令:

     Git branch

     Git branch –a

     Git checkout –b goldfish origin/android-goldfish-2.6.29

這樣就把代碼拉下來了。

三.編譯android源碼和工具包

1.編譯android源碼

進入source目錄下,執行make 即可。

編譯完成後,可以在源碼目錄的out/target/product/generic/目錄下看到編譯好的ramdisk.img、system.img和userdata.img了。

 

編譯中出現的問題:

換用gcc與g++的較低版本

Ubuntu11.10自帶的gcc與g++版本爲4.6,用該版本編譯android時會遇到一些錯誤,錯誤如下所示:

1 host Prebuilt:monkeyrunner

out/host/linux-x86/obj/EXECUTABLES/monkeyrunner_intermediates/monkeyrunner

2 host C++: obbtool <= frameworks/base/tools/obbtool/Main.cpp

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

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

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

解決方法:

網上有文章說修改build/core/combo/HOST_linux-x86.mk文件,將

 1 HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0

修改成

1 HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

這種方法雖然能解決該問題,但也會引出新的問題,還要繼續不斷的修改,很麻煩,而且也會破壞android源碼的原生狀態。但是如果使用4.4版本的gcc與g++,則不會出現這些錯誤,方法如下:

通過gcc -v命令可以發現gcc庫在/usr/lib/gcc/i686-linux-gnu目錄下,該目錄下有當前系統支持的各種版本gcc庫 。在安裝gcc 4.4前該目錄下是沒有4.4目錄的,安裝gcc 4.4後該目錄下就會多出4.4這個目錄,且該4.4目錄下有各種相應庫文件。

   ubuntu 32bit系統下安裝gcc 4.4的最好方法是僅用以下兩條命令,不需要其它命令,否則編譯時可能會出錯:

1 $sudo apt-get install gcc-4.4

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

裝完後進入到/usr/bin目錄下

1 $ls -l gcc*

會顯示以下結果

lrwxrwxrwx 1 root root 7 2011-10-29 09:11 gcc -> gcc-4.6

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

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

發現gcc鏈接到gcc-4.6, 需要將它改爲鏈接到gcc-4.4,方法如下:

1 $sudo mv gcc gcc.bak

2 $sudo ln -s gcc-4.4 gcc

同理,對g++也做同樣的修改:

1 $ls -l g++*

lrwxrwxrwx 1 root root 7 2011-08-14 15:17 g++ -> g++-4.6

-rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4

-rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6

 

需要將g++鏈接改爲g++-4.4:

 

1 $sudo mv g++ g++.bak

 

2 $sudo ln -s g++-4.4 g++

 

再查看gcc和g++版本號:

gcc -v

g++ -v

均顯示gcc version 4.4.6 ,說明gcc 4.4安裝成功。

 

 

2.編譯android 內核(見5.重新編譯內核)

1.設置環境變量

 Export PATH=$PATH:/home/android/source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin

 Export ARCH = arm

2.設置交叉編譯參數

 找到kernel目錄下的文件makefile,修改如下

      1) CROSS_COMPILE = arm-eabi-

      2) 找到如下行,LDFLAGS_BUILD_ID=$(patsubst  –W1$(comma)%,%, $(call ld-option, -W1$(comma) –build-id,), 將改行置空,如下:

      LDFLAGS_BUILD_ID=

3.       編譯鏡像

進入kernel目錄,輸入如下的命令:

 Make goldfish_defconfig         //在5.重新編譯內核

Make

編譯完成後生成的鏡像位於 /kernel/arch/arm/boot目錄下的zImage

     

3.編譯SDK

運行如下的命令

$make PRODUCT-sdk-sdk

執行該命令前先檢查下是否已經生成了,存放在/out/host/linux-x86/sdk下,會刪除編譯android源碼時的部分工作。

 

4.    模擬器

./mksdcard 1024M sdcard.img

./android create avd –target 1 –name lieye –sdcard.img

./android list avd

./emulator –avd lieye

 

./emulator –system  ////system.img

         -data    ////userdata.img

         -ramdisk ////ramdisk.img

         -kernel  ////zImage

 

用上述編譯的,運行結果如下:

emulator: ERROR: Invalid or missing kernel image file: /home/result/zImage

原因待查。

 

5. 重新編譯內核

如下:

    Make clean

make goldfish_armv7_defconfig  

make       

重新加載,模擬器可啓動。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章