系統:Ubuntu16.04.02(優麒麟)
安裝庫文件和JDK
使用cd 命令,進入解壓出來的“Android_JDK” -->“jdk6”文件夾,運行腳本文件
“install-sun-java6.sh”。
進入解壓出來的文件夾“Android_JDK”中運行腳本“install-devel-packages.sh”,安
裝庫文件。在Ubuntu 命令行中,執行命令“./install-devel-packages.sh”。
解決:先刪掉有問題的,最后安裝它。
apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 g++-multilib tofrodos lib32ncurses5-dev python-markdown libxml2-utils xsltproc zlib1g-dev:i386
解決libgl1-mesa-glx-lts-quantal:i386:apt-get install libgl1-mesa-glx-lts-<release>:i386(其中release的值拒取決於你的系統內核,比如的我使用16.04.2安裝的ubuntu則release為wily,具體替換為什么值請參考:release)
解決libgl1-mesa-dev-lts-quantal:apt-get install libgl1-mesa-dev-lts-wily
解決mingw32:deb http://cz.archive.ubuntu.com/ubuntu trusty main universe
發現添加源后執行./install-devel-packages.sh不會報任何錯誤。
降低 GCC 版本
1.apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib
2.update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 100
3.update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
4.update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 100
5.update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
6.update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.4 100
7.update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-5 50
8.gcc -v
Uboot編譯:
內核編譯出錯make zImage
解決辦法:
其實,提示的錯誤信息已經明確告訴你了,你應該省略defined().
這里,我們打開 kernel/timeconst.pl
@val = @{$canned_values{$hz}};
if (!defined(@val)) {
@val = compute_values($hz);
}
output($hz, @val);
將if (!defined(@val)) 改為if (!@val),再次編譯就可以通過了。
查了一下更新,發現其中有一項是perl版本升級到了 v5.22.1,然后查了perl官方文檔,發現官網因為一個bug,該版本將defined(@array)去掉了。可以直接使用數組判斷非空。
Android4.0.3編譯:
解決辦法:
1.卸載make 4.1
apt-get install make
2.下載安裝make 3.81
root@love-xin:/home/hou/下載# tar -xvzf make-3.81.tar.gz
root@love-xin:/home/hou/下載# cd make-3.81
root@love-xin:/home/hou/下載/make-3.81# ./configure --prefix=/home/hou(指定目錄,要不然安裝完后就是在usr/local/bin/make ,這樣就是在/usr/bin/make 存在2個make)
root@love-xin:/home/hou/下載/make-3.81# sh build.sh
root@love-xin:/home/hou/下載/make-3.81# ./make install
root@love-xin:/home/hou/下載/make-3.81# cp /home/hou/bin/make /usr/bin/
開始編譯源碼時間:2016年5月19日07:46:23
完成編譯源碼時間:2016年5月19日15:18:52(包括處理問題等其他事情)
出錯1:
解決方法是安裝perl的switch庫:(apt-get install libswitch-perl)
出錯2:
解決方法:
在dalvik/vm/native/dalvik_system_Zygote.cpp中間增加一個頭文件定義#include <sys/resource.h>
#include "Dalvik.h"
#include "native/InternalNativePriv.h"
#include <sys/resource.h>
出錯3:
問題是內存不足。我用的是2G運行內存,加大到3G繼續。
出錯4:
解決方法:此問題是因為編譯android4.0需要4GB的RAM或SWAP空間,而ubuntu默認的1GB的,所以,增加swap空間即可。
分配給虛擬機4G內存RAM,並且我在這里強烈建議,虛擬機的初始硬盤空間最好給60G以上
如果您的電腦內存實在是太小的話,可以使用SWAP命令去實現虛擬內存,實現的方法如下:
1.創建一個swap文件(大約需要10分鍾)
sudo dd if=/dev/zero of=/boot/swapfile bs=1024 count=4194304
2.格式化文件,使其成為swap(交換設備)
sudo mkswap -v1 /boot/swapfile
3.將swap加入到現有系統中
sudo swapon /boot/swapfile
4.執行free命令
free
5.做永久性變更
sudo vi /etc/fstab
使用vi編輯器,打開fstab文件之后,在文件的末尾加上如下一行
/boot/swapfile swap swap defaults 1 1
出錯5:
解決方案是:
1. 將 iTop4412_uboot_scp_20141224.tar
iTop4412_Kernel_3.0_20150403.tar
iTop4412_ICS_20150413.tar
解壓出來的三個文件夾,放在同一個目錄下
2. 將 uboot/tools/目錄里面的 mkimage.c 和 mkimage.h 復制到 /usr/bin/ 目錄下(或者在.bashrc文件中添加PATH路徑)
3. 執行apt-get install u-boot-tools 命令
成功!