天天看點

ubuntu 12.10 編譯android4.0.1 源碼報錯

最近要修改android 源代碼,是以下載下傳了android 4.0.1源代碼,編譯源代碼真是累人的事情,各種錯誤。

下面記錄出現的錯誤,以及解決方法。

提示資訊

host SharedLib: lib64EGL_translator (out/host/linux-x86/obj/lib/lib64EGL_translator.so)

/usr/bin/ld: cannot find -lGL

collect2: ld returned 1 exit status

make: *** [out/host/linux-x86/obj/lib/lib64EGL_translator.so] Error 1

make: *** Waiting for unfinished jobs....

解決方法 :

sudo apt-get install libglu1-mesa-dev

*****************************************************************************************

host StaticLib: libGLcommon (out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon

_intermediates/libGLcommon.a)

host SharedLib: libGLES_CM_translator (out/host/linux-x86/obj/lib/libGLES_CM_tra

nslator.so)

/usr/bin/ld: cannot find -lGL

collect2: ld returned 1 exit status

make: *** [out/host/linux-x86/obj/lib/libGLES_CM_translator.so] Error 1

解決方法: sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so 

在網上搜到上面的解決方法,可是按照上述方法做了,問題依舊。經過多方實驗,才發現問題所在。通過apt-get install的庫不是libGL.so.1.2了。而是libGL.so.1.2.0.

是以大家在建立連結的時候最好去/usr/lib/i386-linux-gnu/mesa/這個目錄下看看libGL的庫版本,不要完全按照網上的照抄。現在網上的都是“sudo 

ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so ”而我的是sudo 

ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0  /usr/lib/libGL.so 。可能庫最近更新了。

***********************************************************************************************

make: *** [out/target/common/docs/doc-comment-check-timestamp] 錯誤 45      

解決方法:需要做個連結如下:

 sudo ln -s /home/chenchangke/DevEnv/JDK/jdk1.6.0_38/bin/jar  /bin/jar

sudo ln -s /home/chenchangke/DevEnv/JDK/jdk1.6.0_38/bin/java  /bin/java

sudo ln -s /home/chenchangke/DevEnv/JDK/jdk1.6.0_38/bin/javac  /bin/javac

sudo ln -s /home/chenchangke/DevEnv/JDK/jdk1.6.0_38/bin/javah  /bin/javah

sudo ln -s /home/chenchangke/DevEnv/JDK/jdk1.6.0_38/bin/javadoc  /bin/javadoc 

這個解決方法和網上大多數的不一樣。網上很多針對這個問題的,都是在android2.3源代碼遇到的,需要修改4個檔案,而這4個檔案,在android4.0源代碼中,根本沒有。

***************************************************************************************************

/usr/bin/ld: cannot find -lX11

collect2: ld returned 1 exit status

make: *** [out/host/linux-x86/obj/lib/libOpenglRender.so] Error 1

解決方法:$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so

****************************************************************************************************

out/target/common/obj/APPS/android.core.tests.libcore.package.com.no-core-tests-res_intermediates  已殺掉

這個錯誤網上說是SWAP空間不足引起的,可以通過增加SWAP空間解決。我是通過修改編譯參數解決的。

我原來是用的“make -j8”我把他降為“make -j2”,就可以解決了。因為報這個錯誤的時候,已經是編譯的後期了,用2個線程編譯也差不多了。

****************************************************************************************************

編譯完成後啟動模拟器:$ emulator -system system.img -data userdata.img -ramdisk ramdisk.img

報錯提示:qemu: could not load initrd 'ramdisk.img'

  這個是權限的問題,必須進入到out/target/product/generic,執行指令:chmod 777 -R *。

嘗試過在外面把真個源代碼庫添權重限,沒有成功,必須進入到這個目錄修改權限,不知道什麼原因。