ubuntu12.04 下android4.0源碼編譯
經(jīng)過幾波周折,終于在ubuntu上面成功編譯android4.0的源碼,為什么要編譯源碼呢,主要是在源碼的環(huán)境下做一下類似于需要底層框架支持的程序,比如說launcher或者其他占用資源特別多的應(yīng)用程序。因為我的eclipse經(jīng)常崩潰。好吧,廢話不多說了 開始吧 希望對您有用。其中部分資源也是我在網(wǎng)上搜索到的。
1、初始化編譯環(huán)境 (1)軟件需求: Python 2.5 -- 2.7, which you can download from python.org. GNU Make 3.81 -- 3.82, which you can download from gnu.org, JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older. You can download both fromjava.sun.com. Git 1.7 or newer. You can find it at git-scm.com. (2)安裝jsk1.6: $ sudo add-apt-repository "deb http://archive./ lucid partner" $ sudo apt-get update $ sudo apt-get install sun-java6-jdk 也可以自己去官網(wǎng)下載最新的1.6的jdk (3)安裝32位的庫 我的是64位的操作系統(tǒng) 要安裝getlibs這么一個東西 去網(wǎng)上搜索,軟件中心里面我沒有找到。安裝完成后運行 tiger@tiger-desktop:~$ getlibs 會安裝一序列需要支持的32位的so (4)運行下面操作,當(dāng)然有些so是(3)已經(jīng)完成的了 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_35/bin/java$ sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386 這一個命令可能會出錯,別搭理他 繼續(xù)往下執(zhí)行 $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so 目前所需環(huán)境基本上已經(jīng)配置完成。別著急下面還有一些關(guān)鍵性的配置: 2.配置環(huán)境 (1)配置java環(huán)境 確保安裝了1.6最新版本的jdk 進(jìn)行連接 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_35/bin/java sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_35/bin/javac sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk1.6.0_35/bin/javadoc sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.0_35/bin/jar (2)配置gcc 通過gcc -v命令可以發(fā)現(xiàn)gcc庫在/usr/lib/gcc/i686-linux-gnu目錄下,該目錄下有當(dāng)前系統(tǒng)支持的各種版本gcc庫 。在安裝gcc 4.4前該目錄下是沒有4.4目錄的,安裝gcc 4.4后該目錄下就會多出4.4這個目錄,且該4.4目錄下有各種相應(yīng)庫文件。 ubuntu 32bit系統(tǒng)下安裝gcc 4.4的最好方法是僅用以下兩條命令,不需要其它命令,否則編譯時可能會出錯。 1 $sudo apt-get install gcc-4.4 2 $sudo apt-get install g++-4.4 裝完后進(jìn)入到/usr/bin目錄下 1 $ls -l gcc* 會顯示以下結(jié)果 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 發(fā)現(xiàn)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安裝成功。 提示bits/predefs.h:沒有那個文件或目錄 錯誤的 輸入sudo apt-get install gcc-multilib 即可 g++ selected multilib '32' not installed sudo apt-get install g++-4.4-multilib SDL_syswm.h:55: 致命錯誤 sudo apt-get install libx11-dev /usr/bin/ld: cannot find -lz sudo apt-get install lib32z1-dev 3.編譯 進(jìn)入到android源碼跟目錄下面 sudo source build/envsetup.sh sudo lunch full-eng sudo make -j8(cpu的核數(shù) 乘2我的是4核) 編譯中可能會遇到一些錯誤 如果缺少庫的話 可以運行 sudo get-libs 庫名 來安裝相應(yīng)的庫 常見問題請參考 http://wenku.baidu.com/view/52813b61f5335a8102d220b0.html 源文地址 http://source./source/initializing.html 轉(zhuǎn)自:http://blog.csdn.net/jzh2012/article/details/7984000 |
|