歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> RH系列linux上編譯android2.3(gingerbread)

RH系列linux上編譯android2.3(gingerbread)

日期:2017/3/3 12:44:08   编辑:Linux技術
在RH系列linux上編譯android2.3(gingerbread)的過程如下:
官方源碼及ubuntu編譯過程在(http://source.android.com/source/index.html)。
前提:最好用主機編譯,虛擬機的話內存越大越好,最好不低於2G,硬盤40G以上,cpu設定2個以上。即使這樣也經常出現虛擬機失去反應導致崩潰。
android2.2以前默認用32位主機和jdk5, 2.3以後默認用64為主機和jdk6。 網上有說通過修訂源碼可解決此類問題,但是對源碼的修改要盡量少。
本次使用的主機是Red Hat Enterprise Linux Server release 5.7 (64 bit)
可以預先安裝一些工具如:jdk6,git-core,zip,curl gnupg flex bison gperf 等。剩下的庫可以先不安裝,編譯的時候碰到再一次安裝,具體的庫參見附錄的問題解決情況。
#####################################################
然後下載源碼,時間較長,如果有源碼可跳過此步,另外如果想要加快下載速度可以把url中的https替換成http (命令行和manifest中),另外注意源碼路徑跟2.2之前有變,以官網最新為准。
需要使用curl,repo和git。
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo >
~/bin/repo #用curl下載repo工具
chmod a+x ~/bin/repo
repo init -u https://android.googlesource.com/platform/manifest -b
gingerbread #初始化repo 下載gingerbread代碼,沒有b則下載主分支最新代碼,應該是android4.x的
repo sync #正是下載源代碼。
#######################################################
然後開始編譯。
設置環境變量:
export USE_CCACHE=1 #啟用編譯緩存,多次編譯可加速
進入源碼根目錄。執行
source build/envsetup.sh #增加lunch,m等新的命令
lunch full-eng #設定機型,默認是模擬器,全編譯,開發版。無參啟動查看並選擇界面。
make -j4 #四個線程編譯平台鏡像,一般為cpu個數的1~2倍個線程,目標在out/target/product/generic目錄下,此過程會刪除sdk。
make -j4 sdk #編譯sdk,目標在out/host/linux-86/sdk目錄下,此過程會編譯鏡像。
在此過程會遇到許多問題,主要是庫依賴問題,主要問題見下面.
##########################################################
GLIBC_2.11 not found
該問題是因為android用了eglibc2.11代替了glibc,eglibc兼容libc,但更加優化,我們可以編譯eglibc(沒有成功),或者嘗試編譯glibc2.11(沒有成功)。
不過臨時有更加簡單的方法,安卓的gcc降級,如下:
prebuilt/linux-x86/toolchain/下arm-eabi-4.4.0 改為 arm-eabi-4.4.3
undefined reference to `typeinfo for android::SortedVectorImpl'
該問題是android根據後綴名去確定文件類型選用編譯工具導致出錯。解決辦法如下:
修訂system/media/opensles/libopensles/IAndroidEffect.c為cpp,並修訂其mk文件
剩下的為依賴庫安裝 (直接用yum聯網安裝,安裝的時候要注意,有的yum配置默認只安裝x86_64的,可以通過後綴強制安裝i386或者i686的):
stubs-32.h裝glic-devel.i686
libz.so裝libstdc++-devel.i686
lz裝zlib-devel.i686
realine裝readline-devel.i686
ncurse裝ncurse-devel.i686
X11裝libX11-devel.i686
GL裝 mesa-libGL-devel.i686
#############################################################
編譯完成後需要把$SDK下的tools和platform-tools都加入PATH路徑,否則不能創建avd。模擬器也是一片漆黑。
然後執行android list查看api等級和創建的avd,目前avd為空。
android create avd -t 1 -n myavd #創建名字為myavd,1表示列出的第一個platfrom,也就是android-2.3.3
emulator -avd myavd 啟動模擬器。
至此模擬器成功運行起來。
跑模擬器要在圖形界面下~~~
Copyright © Linux教程網 All Rights Reserved