Android源碼編譯環境搭建

linux環境Android源碼編譯環境搭建
java

    以前編譯系統apk(區別通常apk具備系統簽名)、系統庫、鏡像都是在別人的搭建好的服務器上進行操做的,雖然從事android移植工做快兩年了,但還沒本身動手搭建一個android源碼編譯環境,廢話很少說,go(HISI芯片,源碼是Hisi提供的)。 linux

1、安裝linux操做系統 android

    能夠本身的電腦上裝一個虛擬機或者雙系統,建議用另一臺電腦作服務器,方便之後的工做。linux操做系統安裝方式有不少,下面介紹幾種經常使用的安裝方法。
    1.用光盤安裝(最簡單)
    2.linux鏡像+wubi.exe(網上資料不少)
         首先,空出一個盤符(如F盤),將下載的ubuntu-12.04-desktop-i386.iso單獨放在另外一個盤如(D盤),從D盤裏的鏡像中解壓出 wubi.exe,並將ubuntu-12.04-desktop-i386.iso和 wubi.exe放在同一個文件夾下用英文命名(如ubuntu-12.04),而後雙擊 wubi.exe會安裝而不會再去下載鏡像,安裝過程當中讓你選擇盤符時選擇想要安裝盤如F盤。         
    3.使用u盤進行安裝(博主推薦)
    http://blog.csdn.net/xiazdong/article/details/7523331 git

注意:安裝的時候有install和install_server兩個選項,server是不帶desk無桌面版本,安裝的時候選install就好了 shell

2、搭建編譯環境(服務、環境變量等) ubuntu

    因爲博主裝的是linux_server無界面操做系統,而後經過網上資料查詢到裝了一個帶有界面GNOME(侏儒版本)sudo apt-get install gdm(侏儒版功能不多)
    在裝侏儒以後發現沒法啓動終端,經過網上的方法:alt-f2 而後輸入xterm,就能夠打開終端了。
    查看是安裝了多少位的系統能夠經過 getconf LONG_BIT(最好是裝64位系統,開始裝32位編譯的時候各類問題)


安裝以後執行下列步驟:
vim

    步驟1:添加root權限
        在新系統安裝以後是沒有root用戶的,咱們須要經過sudo passwd root來添加root用戶並賦予初始密碼。 安全

    步驟2:安裝SSH服務 bash

        SSH服務(TCP端口號22,secure shell),安全的命令解釋器,爲客戶提供安全的shell環境,用於遠程管理。
        SSH基於公鑰加密(非對稱加密)技術: 數據加密傳輸; 客戶端和服務器的身份驗證;
        公鑰 和 私鑰   是成對生成的,這兩個密鑰互不相同,兩個密鑰能夠互相加密和解密;
        不能根據一個密鑰而推算出另一個密鑰;
        公鑰對外公開,私鑰只有私鑰的持有人才知道;
        sudo apt-get install ssh
        
    

    步驟3:配置samba 服務器

    SMB(Server Message Block 信息服務塊)協議,是一種在局域網上共享文件夾和打印機的一種通訊協議,它爲局域網內不一樣計算機提供文件以及打印機等資源的共享服務。

    安裝Samba
    $sudo apt-get install samba smbfs samba-common smbclient
    建立Samba配置文件
    1. 保存現有的配置文件
    $ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
    2. 打開現有的文件
    $ sudo vim /etc/samba/smb.conf
    在 smb.conf 最後添加
[share]
path = /home/share
available = yes
browseable = yes
public = yes
writable = yes
(注意: 上面的設置中,username 換成你的用戶名, 若是在前面有「#」,須要先把它去掉)
    建立samba用戶
    $ sudo smbpasswd -a USERNAME (USERNAME 換成你的用戶名)
    重啓Samba服務
    $ sudo /etc/init.d/smbd reload (修改過 smb.conf 的話要執行一次)
    $ sudo /etc/init.d/smbd restart
   最後也是最重要的一點,必定要記得chmod一下home/share目錄的權限,要不登錄不進去,會報網絡權限不夠

    驟4: 安裝JDK環境         
    從官網上下載一個linux_64位JDK版本, http://download.oracle.com/otn-pub/java/jdk/6u38-b05/jdk-6u38-linux-x64.bin?AuthParam=1382075406_61d8d0910661adb3a7ae893a841380dc  下載連接地址
    1.創一個目錄用來存放jdk
    mkdir /usr/local/java
    2.把jdk-6u38-linux-x64.bin拷貝到目錄下而後執行安裝
    ./usr/local/java/jdk-6u38-linux-x64.bin
    3.配置環境變量
    vi /etc/profile 把下面屬性添加到最後一行

  #set java environment
export JAVA_HOME=/usr/local/java/jdk1.6.0_38
export JRE_HOME=/usr/local/java/jdk1.6.0_38/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

    4.source /etc/profile 從新加載環境變量
    5.查看java環境是否配置成功

        java -version

    步驟5:配置交叉工具鏈
          方法1:直接按照hisi的文檔,執行他們提供的腳本一步步來
          (1)安裝依賴包         

$ 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
              ( 2)確保服務器上的shell是bash,若是服務器上的shell不是bash,則執行下面操做
                     $ cd /bin
                     $ rm –f sh
                     $ ln –s /bin/bash /bin/sh
        (3)切換至root用戶後,在交叉工具鏈安裝目錄包下執行命令:
          ./cross.install
        (4)退出服務器登陸,從新登陸服務器
        
        (5)最後一步檢測, 輸入「arm-hisiv200-linux-」後按 tab 鍵,若是能自動將命令補齊,則說明安裝成功。
            若是沒法自動補齊,經過下面命令確認環境變量是否正確:
            echo $PATH 若是不正確請用 root 用戶編輯/etc/profile 文件:
            sudo vi /etc/profile 添加以下語句:
            export PATH="/home/root/bin/x86-arm/arm-hisiv200-linux/target/bin:$PATH"

            

        方法2:其餘幾個步驟和上面差很少,就是不用執行hisi提供的腳本,本身實現腳本里面操做

        (1)解壓工具鏈包,到自定義目錄(/usr/local/java/)下面(工具鏈包hisi有提供)
                

        (2)配置環境變量
             vi /etc/profile/
             在最後一行添加上export PATH=/usr/local/java/opt/FriendlyARM/toolschain/4.4.3/bin:$PATH
        (3)從新裝載環境變量
             source /etc/profile
        (4)打印$PATH查看下環境是否配好 

            echo $PATH

3、在編譯過程當中出現的問題

      (1)lunch的時候出現

root@ubuntu:/home/ipanel/zhoulc/Android_4.0_JiuLian# lunch full_godbox-eng The program 'make' is currently not installed. You can install it by typing: apt-get install make ** Don't have a product spec for: 'full_godbox' ** Do you have the right repo manifest?
        直接執行:apt-get install make

      

      (2)lunch的時候/bin/bash: prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-gcc: No such file or directory錯誤

         解決方法:
            
安裝如下 依賴庫才能編譯android 和uboot和kernel(其實以前安裝過,不過沒注意失敗了:請看步驟5方法1)
            
sudo aptitude install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev (成功)
            sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev java-common unixodbc (失敗)

           失敗的時候出現了會報下面的錯誤(很是頭疼,找了很久才找到)          

 root@ubuntu64:/home/zhangbin# root@ubuntu64:/home/zhangbin# 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 Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'lib32z1-dev' instead of 'lib32z-dev' Package lib32readline5-dev is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: lib32readline-gplv2-dev
    而後執行下面的命令就能夠解決找不到/bin/bash: prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-gcc: No such file or directory的問題了

    root@ubuntu64:/home/zhangbin# 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  lib32z1-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos

    

     (3)插曲在操做過程當中不當心弄壞了環境變量致使root全部命令不能使用
        如何恢復linux環境變量

        這主要是路徑問題,先查看$PATH變量的設置。
                echo $PATH
                    裏面的格式是xxx:xxx:xxx:xxx
                    這應該沒包含/usr/bin這個路徑。
                    執行下面命令就能夠將這個路徑包含進去:
                    export PATH=/usr/bin/:$PATH 這樣就能夠用root操做命令了。

                而後vi 把/etc/profile 改回來

    (4)編譯錯誤   

     Install: out/host/linux-x86/bin/monkeyrunner
    host C++: obbtool <= frameworks/base/tools/obbtool/Main.cpp
    <command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
    <built-in>:0:0: note: this is the location of the previous definition
    cc1plus: all warnings being treated as errors
    解決方法: vi ./build/core/combo/HOST_linux-x86.mk
    把 HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0改爲
     HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

    (5)編譯錯誤
    /bin/bash: xmllint: command not found
    方法:sudo apt-get  install libxml2-utils

     /bin/bash: xsltproc: command not found
    方法:sudo apt-get install xsltproc


最後附送兩份文檔
    因爲博主沒有按文檔一步步來操做,因此搭建過程當中出現了各類各樣的錯誤,有文檔仍是好幫手啊。本身動手親自作了,才知道好多細節問題要注意,最大的收穫仍是屬性了linux的環境和vi操做。
    ubuntu10.04配置手冊.pdf+Android SDK 開發指南.pdf.rar

相關文章
相關標籤/搜索