QT210下載燒錄編譯Android2.3過程
工作環境:Ubuntu12.04.5 | QT210開發板光盤 | QT210開發板
Android2.3編譯環境:gcc version 4.4.7 | java version 6 | java version 5 | git version 1.7.9.5
tips by chsry:淺灰色是終端窗口運行保存的部分命令和信息,Ubuntu14.04無法編譯QT210 android2.3(無法安裝java6)
安裝好Ubuntu12.04.5後,最開始的工作是更新軟件。點擊進入update manager將軟件更新到最新的狀態。等系統全部更新好軟件後,繼續後面。
搭建交叉編譯環境,將安裝所需要的 4 個文件
arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.tar
u-boot-samsung-dev.bz2
android-kernel-samsung-dev-full.bz2
android-samsung-dev-full-rtl81xx.bz2
在/home/work/目錄下建立新的文件夾“QT210”,把文件拷貝到這個目錄
在終端下輸入以下內容,在/usr/local 創建 arm 目錄,必須加創建目錄命令前面必須加 sudo
cd /usr/local
sudo mkdir arm
然後轉到 QT210 目錄下,解壓工具鏈到/usr/local/arm 目錄
sudo tar jxvf arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.tar -C /usr/local/arm/
(注意!此命令在同一行上,不要用回車換行!圖片上的換行是文字輸入超過窗口寬度時候自動換行,以下所有操作相同。)
命令前面加 sudo,有時會要求輸入用戶密碼,輸完後回車,後續都如此操作,不再提示。
查看工具鏈是否安裝正確,輸入
ls /usr/local/arm/arm-2009q3/bin/
為了重啟後也可以直接在shell編輯器運行此工具鏈在/root/.bashrc 文件裡末尾一行添加:
export PATH=$PATH:/usr/local/arm/arm-2009q3/bin (也可以直接在終端輸入,表明當前對當前用戶有效)
root@ubuntu:/etc# gedit /root/.bashrc root@ubuntu:/etc# source /root/.bashrc root@ubuntu:/etc# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/arm/arm-2009q3/bin(1)編譯 U-boot
確保回到 QT210 目錄,解壓縮 u-boot 的源代碼:
命令如下:
tar jxvf u-boot-samsung-dev.bz2
進入 u-boot 代碼目錄:
命令如下:
cd u-boot-samsung-dev/
清除原來的編譯痕跡:
命令如下:
make clean
make distclean
配置單板類型:
make smdkv210single_config
編譯:命令:
make
最後將當前目錄下生成我們要燒寫的目標文件'u-boot.bin'
(2)編譯 Kernel
回到/home/armzone/QT210 目錄
cd /home/armzone/QT210
壓內核源代碼包
tar jxvf android-kernel-samsung-dev-full.bz2
cd android-kernel-samsung-dev-full
把 uboot 目錄下的 mkimage 文件拷貝到/usr/bin
sudo cp /home/work/QT210/u-boot-samsung-dev/tools/mkimage /usr/bin/
然後執行如下命令:
cp config_QT210_android .config
開始編譯內核
編譯內核命令如下:
make uImage
編完成後將生成文件'uImage',編譯生成的 uImage 位於 arch/arm/boot 目錄下!
(3)編譯 android
(1)解壓縮 android2.3.1 源代碼文件,命令如下:
回到 home/work/QT210 目錄
(2)安裝所必須的很多庫文件,這一步很重要,同時需要很耐心:
點擊 Save,保存後關閉 gedit
編譯過程分兩步:第一步安裝必要的庫,第二部執行編譯腳本。
添加完源之後,進行源更新,在終端輸入:
sudo apt-get update
(a)庫的第一部分,在終端界面裡面執行如下命令 :
sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev g++
(注意!此命令在同一行上,不要插入回車換行!建議把光盤中的 cmd.txt 文件拷貝到虛擬機,然後復制命令,以下操作要求相同,不再重復)
中間會出現下載提示,輸入 y,回車即可繼續。(後續安裝過程,需要下載都會有此提示,按此操作,不再重復)
【發現錯誤:無法找到libwxgtk2.6-dev,修改如下:】
sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev build-essential zip curl libncurses5-dev zlib1g-dev g++
boot$ sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev build-essential zip curl libncurses5-dev zlib1g-dev g++
The following NEW packages will be installed: bison build-essential curl dpkg-dev esound-common flex g++ g++-4.6 git-core gperf libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasound2-dev libaudiofile-dev libaudiofile1 libavahi-client-dev libavahi-common-dev libbison-dev libcaca-dev libdbus-1-dev libdpkg-perl libdrm-dev libesd0 libesd0-dev libfl-dev libgl1-mesa-dev libglib2.0-dev libglu1-mesa-dev libice-dev libncurses5-dev libpcre3-dev libpcrecpp0 libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libpulse-dev libsdl1.2-dev libslang2-dev libsm-dev libstdc++6-4.6-dev libtimedate-perl libtinfo-dev libx11-dev libx11-doc libxau-dev libxcb1-dev libxdmcp-dev libxext-dev libxt-dev m4 mesa-common-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-xext-dev xorg-sgml-doctools xtrans-dev zlib1g-dev
(b)庫的第二部分,在終端界面裡面執行如下命令
sudo apt-get install gcc-multilib g++-multilib libc6 libc6-dev
>sudo apt-get install gcc-multilib g++-multilib libc6 libc6-dev
The following NEW packages will be installed: g++-4.6-multilib g++-multilib gcc-4.6-multilib gcc-multilib lib64gcc1 lib64gomp1 lib64quadmath0 lib64stdc++6 libc6-amd64 libc6-dev-amd64
繼續安裝庫,在終端輸入
sudo apt-get install libncursesw5 libncursesw5-dev libncurses5-dev libncurses5
>sudo apt-get install libncursesw5 libncursesw5-dev libncurses5-dev libncurses5
The following NEW packages will be installed: libncursesw5-dev
Setting up libncursesw5-dev (5.9-4) ...
繼續安裝庫,在終端輸入
(c)安裝 java 庫,包括 sun-java5 和 sun-java6:
首先是安裝 sun-java6
在ubuntu12.04版本以下按照的辦法(JDK6在ubuntu14.04版本無法使用!!!!)
>sudo gedit /etc/apt/sources.list
末尾添加deb http://old-releases.ubuntu.com/ubuntu/ hardy multiverse
sudoadd−apt−repository"debhttp://old−releases.ubuntu.com/ubuntu/hardymultiverse"(如果按照上面的設置此行代碼就不用了) sudo apt-get update
$ sudo apt-get install sun-java6-jdk
>sudo apt-get install sun-java6-jdk
The following NEW packages will be installed: gsfonts-x11 java-common libodbc1 odbcinst odbcinst1debian2 sun-java6-bin sun-java6-jdk sun-java6-jre unixodbc
在安裝過程需要接受 Java 的協議,會自動跳出協議的界面,按“Tab”鍵選中“OK”選中時為紅色背景。
按回車或者空格確認。
->java -version
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)
然後安裝 sun-java5
在終端界面裡面執行如下命令:
sudo apt-get install sun-java5-jdk
>sudo apt-get install sun-java5-jdk
The following NEW packages will be installed: sun-java5-bin sun-java5-demo sun-java5-jdk sun-java5-jre
chsry@ubuntu:~$ java -version java version "1.6.0_06" Java(TM) SE Runtime Environment (build 1.6.0_06-b02) Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)(3)執行編譯命令
轉到 andriod 目錄
在 android 代碼目錄下,執行如下命令:
對於 32 位系統,
./build_android_32.sh
對於 64 位系統,
./build_android_64.sh
問題一: frameworks/base/libs/utils/RefBase.cpp:483:67: error: passing ‘const android::RefBase::weakref_impl’ as ‘this’ argument of ‘void android::RefBase::weakref_impl::trackMe(bool, bool)’ discards qualifiers [-fpermissive] 原因:Ubuntu 11.10的gcc 4.6版本太高了,android編譯需要gcc 4.4 解決辦法:更換gcc、g++版本4.6為4.4 sudo apt-get install gcc-4.4 sudo apt-get install g++-4.4 sudo rm -rf /usr/bin/gcc /usr/bin/g++ sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++ 問題2: g++: 錯誤: –fpermissive:沒有那個文件或目錄 make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] Error 1 解決辦法:sudo apt-get install g++-4.4-multilib 經過此操作編譯可順利進行。 >./build_android_32.sh (不需要管理權限也行) Total compile time is 1731 seconds [[[[[[[ Make ramdisk image for u-boot ]]]]]]] Image Name: ramdisk Created: Fri Aug 14 20:09:51 2015 Image Type: ARM Linux RAMDisk Image (uncompressed) Data Size: 1340861 Bytes = 1309.43 kB = 1.28 MB Load Address: 30800000 Entry Point: 30800000 [[[[[[[ Make additional images for fastboot ]]]]]]] No zImage is found at ../android-kernel-samsung-dev/arch/arm/boot Please set KERNEL_DIR if you want to make additional images Ex.) export KERNEL_DIR=~ID/android_kernel_smdkv210 ok success !!! 在/home/work/QT210/android-samsung-dev-full-rtl81XX/out/target/product/smdkv210可以看到 ramdisk-uboot.img和system.img和userdata.img三個文件QT210下載燒錄編譯Android4.0過程
工作環境:ubuntu12.04.5 | 光盤中的arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.tar文件
android4.0編譯環境:gcc version 4.4.7 | java version 6 | git version 1.7.9.5(因為無法編譯android4.0,所以無法驗證此環境的是否正確,等待日後修正)
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11