Ubuntu16編譯老版本AOSP排坑指南

因為想研究一下Davik相關順便考考古所以安裝個編譯一波Android老版本源碼,發(fā)現(xiàn)問題不少,主要還是因為新編譯相關環(huán)境變動太大導致。以下是我遇到的一些坑,不過也不能保證所有人都能安裝,因為我在兩臺不同的電腦上編譯報的錯還不一樣



編譯的android 系統(tǒng)版本4和6

gcc 4.2.1

make 3.81

ubuntu 16

在安裝前應該確定自己的gcc(g++)、make、等版本。并且編譯一個hello.c和hello.cpp的64和32位版本,如果編譯不通過肯定會出問題

安裝完成后 out文件夾3.2GB

調(diào)試技巧一:在用多線程(使用了-j參數(shù))出現(xiàn)錯誤后用不使用多線程make來編譯一下,這樣錯誤會清晰一點

異常及解決方案

gcc在新linux版本上無法安裝老版本問題先嘗試添加apt源方式下載,如果不行再試試去http://old-releases.ubuntu.com/ubuntu/pool/universe/g去尋找deb包安裝

因為apt源方式能裝上全家桶且卸載容易適合反復調(diào)試問題

安裝老版本make比較簡單

下載make壓縮包解壓后輸入以下命令:

./configure

make

sudo make install

最后把make鏈接到/usr/bin或者到配置文件中添加引用

注意安裝時得先安裝上默認版本的make和gcc、g++.我當前版本是5.4

異常

localize_intermediates/localize 及后續(xù)錯誤 undefined reference to symbol 'pthread_create@@GLIBC_xx'

解決方案

在localize文件夾中修改Android.mk

將LOCAL_LDLIBS+= -lrt 修改為 LOCAL_LDLIBS+= -lrt -lpthread

異常

error:asm/errno.h:沒有那個文件或目錄

解決方案

sudo ln -s /usr/include/asm-generic /usr/include/asm

異常

找不到crti.o

解決方案

export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH

可能需要額外鏈接 /lib/x86_64-linux-gnu/libgcc_s.so.1 到 /lib/libgcc_s.so

異常

找不到lstdc++

解決方案

ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so

異常

找不到asm/byteorder.h

解決方案

ln -s /usr/include/x86_64-linux-gnu/asm /usr/include/asm

異常

aapt(out/host/linux-x86/obj/EXECUTABLES/aapt-intermediates/aapt).....(省略一段)

無法添加符號:DSO missing from command linie

解決方案

到aapt文件夾下(framwork下面)的Android.mk 在LOCAL_LDLIBS += -lrt 修改為 LOCAL_LDLIBS += -lrt -lpthread

異常

/usr/bin/ld: out/host/linux-x86/obj/EXECUTABLES/accRuntimeTest_intermediates/runtimeTest.o: undefined reference todlsym@@GLIBC_2.0

解決方案

system/core/libacc/tests/Android.mk

中所有模塊添加

LOCAL_LDLIBS += -ldl

異常

PreloadScanner中findEntity多次定義問題

在代碼引入HTMLEntityName那塊,注釋掉整塊后直接調(diào)用else中的代碼

異常

編譯完成后命令emulate無法調(diào)起模擬器提示:SDL init failure,reason is:No available video device

解決方案

apt安裝libsdl1.2debian:i386

異常

在ubuntu18中可能某些軟件包等級過高或其它沖突無法安裝libsdl1.2debian:i386

解決方案

安裝aptitude。使用他來自動解決軟件包沖突問題安裝缺失包

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容