zoukankan      html  css  js  c++  java
  • QT210 android2.3 和android4.0 烧写编译日记

    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

    $ sudo add-apt-repository "deb http://old-releases.ubuntu.com/ubuntu/ hardy multiverse" (如果按照上面的设置此行代码就不用了)
    $ 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 git@github.com: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 git@github.com: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-4.0需注意

    环境要求改变。

      现在要求内存1.5G左右,硬盘25G以上,以前1G、10G就够了。

      官方说明“Note: The source download is approximately 6GB in size. You will need 25GB free to complete a single build, and up to 80GB (or more) for a full set of builds.

    错一:

    host SharedLib: libbcc (out/host/linux-x86/obj/lib/libbcc.so)
    collect2: ld terminated with signal 9 [Killed]
    make: *** [out/target/common/obj/JAVA_LIBRARIES/core_intermediates/noproguard.classes-with-local.dex] Killed
    make: *** Waiting for unfinished jobs….
    make: *** [out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/llvm-rs-cc] Error 1
    collect2: ld terminated with signal 9 [Killed]
    collect2: ld terminated with signal 9 [Killed]
    make: *** [out/host/linux-x86/obj/lib/libbcc.so] Error 1
    make: *** [out/host/linux-x86/obj/EXECUTABLES/clang_intermediates/clang] Error 1
    weihongcsu@ubuntu:~/disk2/android-4.0.1_r1$

    错二:

    target Dex: framework
    make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex] Killed
    weihongcsu@ubuntu:~/disk2/android-4.0.1_r1$

    错三:

    arm-eabi-g++: Internal error: Killed (program cc1plus)

    解决办法:

    这些错误都是 linux的OOM killer 导致,“内存1.5G左右,硬盘25G”就可以解决,我为了保险,把make -j4改成了make.编译5个小时以上吧,out目录大小:12G。

    以上的办法没有试,我修改了虚拟机的内核为4,然后内存改为2G,就可以正常编译了。

     
     
     

    作者:chsry
    出处:www.cnblogs.com/chsry
    日期:2015-08-18
    本博客文章,大多系个人整理开发,转载请注明出处
  • 相关阅读:
    day02-html+css
    day01-html+css
    ES6-03 symbol数据类型,代理,遍历的使用
    ES6-02 新增方法及函数新增
    Java创建对象基础与修饰符整理
    python dataframe基于另一列提取对应列值
    Python .seq文件批量转.fas 并根据文件夹与文件名重命名
    Python 批量修改文件夹名称 (os.rename)
    Python 批量修改文件夹名称 (os.rename)
    R mgcv包参数 gam参数
  • 原文地址:https://www.cnblogs.com/chsry/p/4731373.html
Copyright © 2011-2022 走看看