ubuntu12.04 下android4.0源碼編譯
經過幾波周折,終于在ubuntu上面成功編譯android4.0的源碼,為什么要編譯源碼呢,主要是在源碼的環境下做一下類似于需要底層框架支持的程序,比如說launcher或者其他占用資源特別多的應用程序。因為我的eclipse經常崩潰。好吧,廢話不多說了 開始吧 希望對您有用。其中部分資源也是我在網上搜索到的。
1、初始化編譯環境
(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.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
也可以自己去官網下載最新的1.6的jdk
(3)安裝32位的庫 我的是64位的操作系統
要安裝getlibs這么一個東西 去網上搜索,軟件中心里面我沒有找到。安裝完成后運行
tiger@tiger-desktop:~$ getlibs
會安裝一序列需要支持的32位的so
(4)運行下面操作,當然有些so是(3)已經完成的了
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
這一個命令可能會出錯,別搭理他 繼續往下執行
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
目前所需環境基本上已經配置完成。別著急下面還有一些關鍵性的配置:
2.配置環境
(1)配置java環境
確保安裝了1.6最新版本的jdk
進行連接
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命令可以發現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安裝成功。
提示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.編譯
進入到android源碼跟目錄下面
sudo source build/envsetup.sh
sudo lunch full-eng
sudo make -j8(cpu的核數 乘2我的是4核)
編譯中可能會遇到一些錯誤
如果缺少庫的話 可以運行
sudo get-libs 庫名 來安裝相應的庫
常見問題請參考
http://wenku.baidu.com/view/52813b61f5335a8102d220b0.html
源文地址
http://source.android.com/source/initializing.html
轉自:http://blog.csdn.net/jzh2012/article/details/7984000