歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> QT210 Android2.3 和Android4.0 燒寫編譯日記

QT210 Android2.3 和Android4.0 燒寫編譯日記

日期:2017/2/28 13:58:55   编辑:Linux教程

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,所以無法驗證此環境的是否正確,等待日後修正)


(1)打開終端,輸入:apt-get update 更新完畢後,然後輸入:apt-get install git 即可完成git 的安裝。 (2)安裝java6(之前已經安裝過) (3)安裝庫文件(這裡沒有更新,因為後面的步驟沒有沒有編譯android4.0的步驟,所以暫時不用做) (4)搭建交叉編譯環境,(之前已經搭建好)
cd /usr/local mkdir arm sudo tar jxvf arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.tar -C /usr/local/arm/
  gedit /root/.bashrc 文件裡末尾一行添加 export PATH=$PATH:/usr/local/arm/arm-2009q3/bin
(5)在github下載u-boot文件:在/home/work/QT210目錄下:>git clone [email protected]:jackyh/qt210_ics_uboot.git (6)編譯u-boot:cd ./qt210_ics_uboot make smdkv210single_config make 生成u-boot.bin (7)拷貝uboot目錄下的mkimage到/usr/bin: >sudo cp /home/work/QT210/qt210_ics_uboot/tools/mkimage /usr/bin/ (其實就是設置環境變量,之前有類似的操作)
(7)下載kernel ,在/home/work/QT210目錄下: >git clone [email protected]:jackyh/qt210_ics_kernel3.0.8.git (8)編譯kernel: cd qt210_ics_kernel3.0.8/ cp config_capacity .config make -j2 uImage 生成uImage (9)編譯android4.0(此步驟因為缺少文件無法進行從略)

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved