[Android 6.0][MTK 6737]MTKコンパイル環境構築


Hardware: MTK6737 Android: 6.0(API 23) Kernel: Linux 3.4.67
  • コンパイル環境のインストールとコンパイル
  • インストールコンパイル環境依存パッケージ
  • bootloaderとkernelコンパイル
  • Androidコンパイル
  • パッケージ

  • ハードウェアパラメータ
  • MTK6737
  • Check SDK Version

  • コンパイルで発生した問題
  • clang問題
  • STATIC_LIBRARIES SHARED_LIBRARIESタイプの問題

  • 焼録

  • コンパイル環境のインストールとコンパイル
    コンパイル環境依存パッケージのインストール
    2>ubuntu < 12.04
    sudo apt-get install git-core gnupg flex bison ccache gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev gcc-4.4 g++-4.4 g++-4.4-multilib g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc wine

    3>ubuntu = 14.04
    sudo apt-get install git-core gnupg flex bison ccache gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev g++-multilib g++-4.8-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc libc6-dev-i386 lib32z1 lib32ncurses5 lib32bz2-1.0 lib32readline-gplv2-dev wine

    インストールに問題はありません
    ubuntu = 16.04
    sudo apt-get install git-core gnupg flex bison ccache gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev g++-multilib g++-4.8-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc libc6-dev-i386 lib32z1 lib32ncurses5 lib32bz2-1.0 lib32readline-gplv2-dev wine

    エラーは以下のように位置決めできません:libwxgtk 2.8-dev mingw32 lib32bz2-1.0 lib32readline-gplv2-dev
    Ubuntu 16.04中libwxgtk 2.8-devはlibwxgtk 3にアップグレードする.0-dev; lib 32 bz 2-1.0はlibbz 2-1.0:i 386にアップグレードされました.lib 32 readline-gplv 2-devはlib 32 readline 6-devにアップグレードされました.したがって、
    sudo apt install libwxgtk3.0-dev  lib32readline6-dev libbz2-1.0:i386

    mingw 32はsudo vi /etc/apt/sources.listにソースを追加する必要があります.
    deb http://us.archive.ubuntu.com/ubuntu trusty main universe

    あとは以下のようにすればよい
    sudo apt update
    sudo apt install mingw32 

    bootloaderとkernelコンパイル
    フルコンパイル:
    cd runyee/scripts/
    ./auto.sh IoT_bd6737m_35g_b_m0_ry_smt_hd720_pcb_v1 v00 eng

    私たちのモジュールlunchはbd 6737 mであることがわかりました.35g_b_m 0というプロジェクト
    モジュールコンパイル:まずget_を介してbuild_varはプロジェクト名を取得します:
    get_build_var TARGET_DEVICE
    op_project_name
    
    get_build_var TARGET_BUILD_VARIANT
    eng

    モジュールコンパイル時にpreloader:1に転送できます.個別コンパイル
    make -j4 pl 2>&1 | tee pl_build.log
    bootable/bootloader/preloader/binが生成されます
  • buildスクリプトコンパイル:
  • cd bootable/bootloader/preloader
    TARGET_PRODUCT=$op_project_name ./build.sh 2>&1 | tee preloader_build.log

    lk:
    make -j4 lk 2>&1 | tee lk_build.log
    bootable/bootloader/lk/build-xxが生成されます
    Kernel: 1. 個別コンパイル
    cd kernel-3.18
    mkdir out
    make -j4 O=out 2>&1 | tee kernel_build.log

    kernel-3.18/out/arch/arm 64/boot/Imgeが生成されます.gz-dtb
  • buildスクリプトコンパイル
  • make -j8 n k && make -j8 r bootimage

    clean:
    # Clean ALL
    make clean
    # Clean PL
    make clean-pl
    # Clean lk
    make clean-lk
    # Clean kernel
    make clean-kernel

    Androidコンパイル
    # 1.     
    source build/envsetup.sh
    # 2.     
    lunch full_bd6737m_35g_b_m0-eng
    # 3. MTK     
    source mbldev.sh
    # 4.   
    make -j4 2 > &1 | tee mtk_build.log

    梱包する
    # pack boot image
    make -j4 bootimage
    
    # pack system image                   
    make -j4 systemimage
    
    # pack system image      system image
    # (                  ,   build        snod     )
    make -j4 snod 
    
    # pack ota image
    make -j4 otapackage

    ハードウェアパラメータ
    https://versus.com/en/mediatek-mt6735-vs-mediatek-mt6737
    MTK6737
    4 x 1.3GHz 28nm LTE supported GPU: MailT720
    Check SDK Version
    vi build/core/version_defaults.mk
    
      PLATFORM_VERSION := 6.0    
      PLATFORM_SDK_VERSION := 23   #Android6.0
    
    vi kernel/Makefile
    VERSION = 3
    PATCHLEVEL = 18
    SUBLEVEL = 19

    コンパイル中に発生した問題
    clang問題
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    build/core/host_shared_library_internal.mk:51: recipe for target 'out/host/linux-x86/obj/lib/libart.so' f
    ailed
    make: *** [out/host/linux-x86/obj/lib/libart.so] Error 1

    解決方法:コードart/build/Android.common_build.mk
       # By default, host builds use clang for better warnings.
    --  ART_HOST_CLANG := true
    ++  ART_HOST_CLANG := false

    STATIC_LIBRARIES SHARED_LIBRARIESタイプの問題
    例えば次のような
    make: *** No rule to make target 'out/target/product/bd6737m_35g_b_m0/obj/STATIC_LIBRARIES/libcam.halmemory_intermediates/export_includes', needed by 'out/target/product/bd6737m_35g_b_m0/obj/SHARED_LIBRARIES/libcam_platform_intermediates/import_includes'。   。
    make: ***           ....
    target thumb C++: libcam.device3.base <= vendor/mediatek/proprietary/hardware/mtkcam/legacy/v3/device/Cam3DeviceFactory.cpp
    make: *** No rule to make target 'out/target/product/bd6737m_35g_b_m0/obj/STATIC_LIBRARIES/libcam.halmemory_intermediates/export_includes', needed by 'out/target/product/bd6737m_35g_b_m0/obj/SHARED_LIBRARIES/libcam_platform_intermediates/import_includes'。   。
    make: ***           ....
    target StaticLib: libcam.device3.base (out/target/product/bd6737m_35g_b_m0/obj/STATIC_LIBRARIES/libcam.device3.base_intermediates/libcam.device3.base.a)

    コンパイル環境依存パッケージのインストールに必要なパッケージを参照してください.
    レコード枚
    Linuxでの書き込みツールはSP_Flash_Tool_v5.1644_Linux.zipの使用方法:http://spflashtools.com/linux/sp-flash-tool-v5-1644-linux