amlogic 编译 android

来源:互联网 发布:厦门海关网络自主申报 编辑:程序博客网 时间:2024/05/21 07:10

downloadtypespathgcctreebuild
/******************************************************************************************************************/
               SDK Enviroment config
/******************************************************************************************************************/
1. download cross compile toolchains from the following:
        http://openlinux.amlogic.com/wiki/index.php/Arm/Development_Tools

2. tar -xvjf arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
   cp -rf arm-2010q1 /usr/local/arm/

   add the following to /etc/bash.bashrc

        #add arm tool chain to PATH by liaowm
        if [ -d /usr/local/arm/arm-2010q1 ];then
        export PATH=/usr/local/arm/arm-2010q1/bin:$PATH
        fi  

3. download arc tools from the following:
        http://openlinux.amlogic.com/wiki/index.php/Arc/Development_Tools

4. tar -xvjf gnutools-arc2.3-p0-ubuntu-9.04-2010-5-10.tar.bz2
   cp to /opt/gnutools/arc2.3-p0
   add the following to /etc/bash.bashrc

        SET_PATH=$( echo "$PATH" | grep elf32)
        if [  "$SET_PATH" = "" ]; then
        ARC_PREFIX=/opt/gnutools/arc2.3-p0
        PATH=$PATH:${ARC_PREFIX}/elf32-4.2.1/bin:${ARC_PREFIX}/uclibc-4.2.1/bin:
        fi  

5. if encount pthread error, install gcc 4.4

        apt-get install gcc-4.4
        update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.5 40
        update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 30
        update-alternatives --config gcc


6. if encount the following error:

        target Generated: libwebcore <= external/webkit/WebCore/css/CSSCharsetRule.idl
        gcc: error trying to exec 'cc1plus': execvp: 没有那个文件或目录
        Can't call method "fileName" without a package or object reference at external/webkit/WebCore/bindings/scripts/IDLParser.pm line 112.
        make: *** [out/target/product/imx51_BBG/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/JSCSSCharsetRule.h] 错误 255

        that means g++ and gcc version are not the same, install gcc 4.4 and g++ 4.4

        apt-get install g++-4.4
        update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.5 40
        update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 30
        update-alternatives --config g++

7. if encount the following error:

    host Executable: acp (out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp)
    host SharedLib: libneo_cgi (out/host/linux-x86/obj/lib/libneo_cgi.so)
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.3.3/libstdc++.so when searching for -lstdc++
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.3.3/libstdc++.a when searching for -lstdc++
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.3.3/libstdc++.so when searching for -lstdc++
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.3.3/libstdc++.a when searching for -lstdc++
    /usr/bin/ld: cannot find -lstdc++
    collect2: ld 返回 1
    make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] 错误 1
    make: *** 正在等待未完成的任务....

        or

        /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../libz.so when searching for -lz
        /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../libz.a when searching for -lz
        /usr/bin/ld: skipping incompatible /usr/lib/libz.so when searching for -lz
        /usr/bin/ld: skipping incompatible /usr/lib/libz.a when searching for -lz
        /usr/bin/ld: cannot find -lz
        collect2: ld returned 1 exit status
        make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1

    that means some libs of gcc and g++ (we have download a new version of gcc/g++, but no coresponding libs, remember?)  are not installed well, use the following:

        apt-get install gcc-4.4-multilib
        apt-get install g++-4.4-multilib

        so remember next time, when install a new version of gcc/g++, you should also install the coresponding multilib.

8. if encount the following error of FBReader

        for repeatable builds
       [javac] Compiling 333 source files to /Users/zhangcy/Desktop/Eclipse workspace/FBReaderJ/bin/classes
       [javac] /Users/zhangcy/Desktop/Eclipse workspace/FBReaderJ/src/org/geometerplus/android/fbreader/TOCActivity.java:79: inconvertible types
       [javac] found   : org.geometerplus.zlibrary.core.tree.ZLTree<capture#147 of ?>
       [javac] required: org.geometerplus.fbreader.bookmodel.TOCTree
       [javac]         final TOCTree tree = (TOCTree)myAdapter.getItem(position);
       [javac]                                                        ^
       [javac] /Users/zhangcy/Desktop/Eclipse workspace/FBReaderJ/src/org/geometerplus/android/fbreader/TOCActivity.java:99: inconvertible types
       [javac] found   : org.geometerplus.zlibrary.core.tree.ZLTree<capture#134 of ?>
       [javac] required: org.geometerplus.fbreader.bookmodel.TOCTree
       [javac]             final TOCTree tree = (TOCTree)getItem(position);
       [javac]                                                  ^
       [javac] /Users/zhangcy/Desktop/Eclipse workspace/FBReaderJ/src/org/geometerplus/android/fbreader/TOCActivity.java:112: inconvertible types
       [javac] found   : org.geometerplus.zlibrary.core.tree.ZLTree<capture#255 of ?>
       [javac] required: org.geometerplus.fbreader.bookmodel.TOCTree
       [javac]             final TOCTree tree = (TOCTree)getItem(position);
       [javac]                                                  ^
       [javac] /Users/zhangcy/Desktop/Eclipse workspace/FBReaderJ/src/org/geometerplus/android/fbreader/TOCActivity.java:113: incomparable types: org.geometerplus.fbreader.bookmodel.TOCTree and org.geometerplus.zlibrary.core.tree.ZLTree<capture#940 of ?>
       [javac]             view.setBackgroundColor((tree == mySelectedItem) ? 0xff808080 : 0);
       [javac]                                           ^
       [javac] /Users/zhangcy/Desktop/Eclipse workspace/FBReaderJ/src/org/geometerplus/android/fbreader/TOCActivity.java:135: inconvertible types
       [javac] found   : org.geometerplus.zlibrary.core.tree.ZLTree<capture#384 of ?>
       [javac] required: org.geometerplus.fbreader.bookmodel.TOCTree
       [javac]             openBookText((TOCTree)tree);
       [javac]                                   ^
       [javac] Note: Some input files use unchecked or unsafe operations.
       [javac] Note: Recompile with -Xlint:unchecked for details.
       [javac] 5 errors
/Users/xxxx/android-sdk-mac_x86/tools/ant/main_rules.xml:384: Compile failed; see the compiler error output for details.

                check your jdk version, it may be not the newest(java -version), download jdk-6u31-linux-x64.bin from oracle offical website.

                ./jdk-6u31-linux-x64.bin
                export JAVA_HOME=/home/liaowm/m3/tool/jdk1.6.0_31


                that means your jdk is not new enough. download


9. build process:
        a.      Build rootfs:
                   $. build/envsetup.sh
                   $ lunch ref04-user
                   $make
        b.      Build kernel:
        $make meson_reff04_defconfig
        $make menuconfig
        enable General setup->Initial RAM filesystem and RAM disk
                set "Initramfs source file" to root dir(../out/target/product/refb17/root)
        $make uImage
        copy uImage to out/target/product/reff04
        c.       build uImage_recovery
        $make menuconfig
        set General setup->”Initramfs source file” to recovery root dir(../out/target/product/reff04/recovery/root)
          $make uImage
          rename uImage into uImage_recovery
          copy uImage_recovery to out/target/product/reff04
        d.       build reff04-ota-eng.username.zip
        $cd ..
          $make otapackage
        e.      flash image into nand
          cp ref-ota-eng.username.zip uImage uImage_recovery into sdcard

10. update system

        a. Put u-boot-aml.bin uImage uImage_recovery and *.zip to SD card
        b. insert the SD to MID
        c. Power on ,and press vol+ at the same time , release vol+ while you can see some update options display on the panel
        d. press vol+ or vol- to move the focus on wipe media partition("wipe media partition"),then press menu select "yes".
        e. press vol+ or vol- to move the focus on wipe data/factory reset ("wipe data/factory reset"),then press menu select "yes".
        f. press vol+ or vol- to move the focus on the second option(apply update from sdcard’, then press menu ,select"b17ref-ota-eng.username.zip".the update process will start
        g. wait for the complete of the update and reboot

11. if you find that the system can not run because the root filesystem is mount in NFS, that may be the kernel problem. make clean kernel, then make again, it may be good.
原创粉丝点击