I.MX6 Android 5.1.1 下载、编译
/************************************************************************* * I.MX6 Android 5.1.1 下载、编译 * 说明: * 这里要提到的就是4.2版本,编译中断了,你接着编好像是没事的,但是这个 * 5.1.1版本貌似就得从头再编,这个有点郁闷。 * * 2016-9-9 深圳 南山平山村 曾剑锋 ************************************************************************/ 一、购买VPN(为什么要买VPN?因为要去和Google打交道): https://www.expressvpn.xyz 二、下载参考文档: http://www.nxp.com/zh-Hans/products/microcontrollers-and-processors/arm-processors/i.mx-applications-processors/i.mx-6-processors/i.mx6qp/i.mx-6duallite-processors-dual-core-3d-graphics-hd-video-arm-cortex-a9-core:i.MX6DL?fpsp=1&tab=Documentation_Tab 三、下载补丁包: http://www.nxp.com/zh-Hans/products/software-and-tools/hardware-development-tools/sabre-development-system/sabre-platform-for-smart-devices-based-on-the-i.mx-6-series:RDIMX6SABREPLAT?fpsp=1&tab=Design_Tools_Tab 四、安装lib依赖: sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip uuid uuid-dev zlib1g-dev liblz-dev liblzo2-2 liblzo2-dev lzop git-core curl u-boot-tools mtd-utils android-tools-fsutils 五、安装JDK: sudo apt-get install openjdk-7-jdk 六、下载Android源代码: $ cd ~ $ mkdir myandroid $ mkdir bin $ cd myandroid $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo $ ~/bin/repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r1 $ ~/bin/repo sync # this command loads most needed repos. Therefore, it can take several hours to load. $ cd ~/myandroid/prebuilts/gcc/linux-x86/arm $ git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/armeabi-4.6 $ cd arm-eabi-4.6 $ git checkout android-4.4.3_r1 七、下载kernel: $ cd ~/myandroid $ git clone git://git.freescale.com/imx/linux-2.6-imx.git kernel_imx # the kernel repo is large. Therefore, this process can take a while. $ cd kernel_imx $ git checkout l5.1.1_2.1.0-ga 八、下载u-boot: $ cd ~/myandroid/bootable $ cd bootloader $ git clone git://git.freescale.com/imx/uboot-imx.git uboot-imx $ cd uboot-imx $ git checkout l5.1.1_2.1.0-ga 九、在home目录解压补丁包: 1. tar xvf IMX6_L5.1_2.1.0_AND_SOURCE_BSP.tar.gz 2. cd android_L5.1.1_2.1.0-ga_core_source/code/ 3. tar xvf L5.1.1_2.1.0-ga.tar.gz 4. source ~/android_L5.1.1_2.1.0-ga_core_source/code/L5.1.1_2.1.0-ga/and_patch.sh 十、开始打补丁,出现warning: $ c_patch ~/android_L5.1.1_2.1.0-ga_core_source/code/L5.1.1_2.1.0-ga/ imx_L5.1.1_2.1.0-ga ...... Applying patch to hardware/broadcom/libbt /home/zengjf/myandroid/hardware/broadcom/libbt/.git/rebase-apply/patch:42: new blank line at EOF. + warning: 1 line adds whitespace errors. /home/zengjf/myandroid/hardware/broadcom/libbt/.git/rebase-apply/patch:41: new blank line at EOF. + warning: 1 line adds whitespace errors. /home/zengjf/myandroid/hardware/broadcom/libbt/.git/rebase-apply/patch:26: new blank line at EOF. + warning: 1 line adds whitespace errors. Applying patch to hardware/broadcom/wlan Applying patch to packages/wallpapers/MusicVisualization Applying patch to external/aac Applying patch to external/tremolo Applying patch to external/libpng Applying patch to external/sonivox Applying patch to packages/apps/DeskClock ************************************************************* Success: Now you can build android code for FSL i.MX platform ************************************************************* 十一、编译: 1. export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ 2. cd ~/myandroid 3. source build/envsetup.sh 4. lunch sabresd_6dq-user 5. make 2>&1 | tee build-log.txt 十二、编译完成最后输出信息: ...... host C: libbz_32 <= external/bzip2/compress.c host C: libbz_32 <= external/bzip2/decompress.c host C: libbz_32 <= external/bzip2/bzlib.c host StaticLib: libbz_32 (out/host/linux-x86/obj32/STATIC_LIBRARIES/libbz_intermediates/libbz.a) Export includes file: bootable/recovery/applypatch/Android.mk -- out/host/linux-x86/obj32/EXECUTABLES/imgdiff_intermediates/export_includes host Executable: imgdiff (out/host/linux-x86/obj32/EXECUTABLES/imgdiff_intermediates/imgdiff) Notice file: bootable/recovery/applypatch/NOTICE -- out/host/linux-x86/obj/NOTICE_FILES/src//bin/imgdiff.txt Notice file: external/bzip2/NOTICE -- out/host/linux-x86/obj/NOTICE_FILES/src//lib/libbz.a.txt Install: out/host/linux-x86/bin/imgdiff Import includes file: out/host/linux-x86/obj32/EXECUTABLES/bsdiff_intermediates/import_includes host C: bsdiff <= external/bsdiff/bsdiff.c external/bsdiff/bsdiff.c: In function 'main': external/bsdiff/bsdiff.c:196:5: warning: 'pos' may be used uninitialized in this function [-Wmaybe-uninitialized] Export includes file: external/bsdiff/Android.mk -- out/host/linux-x86/obj32/EXECUTABLES/bsdiff_intermediates/export_includes host Executable: bsdiff (out/host/linux-x86/obj32/EXECUTABLES/bsdiff_intermediates/bsdiff) Install: out/host/linux-x86/bin/bsdiff Construct recovery from boot mkdir -p out/target/product/sabresd_6dq/obj/PACKAGING/recovery_patch_intermediates/ PATH=out/host/linux-x86/bin:$PATH out/host/linux-x86/bin/imgdiff out/target/product/sabresd_6dq/boot.img out/target/product/sabresd_6dq/recovery.img out/target/product/sabresd_6dq/obj/PACKAGING/recovery_patch_intermediates/recovery_from_boot.p chunk 0: type 0 start 0 len 7274506 chunk 1: type 2 start 7274506 len 1480704 chunk 2: type 0 start 8142159 len 49112 Construct patches for 3 chunks... patch 0 is 205 bytes (of 7274506) patch 1 is 435259 bytes (of 867653) patch 2 is 594 bytes (of 49112) chunk 0: normal ( 0, 7274506) 205 chunk 1: deflate ( 7274506, 1476108) 435259 (null) chunk 2: normal ( 8750614, 48918) 594 Install system fs image: out/target/product/sabresd_6dq/system.img out/target/product/sabresd_6dq/system.img+out/target/product/sabresd_6dq/obj/PACKAGING/recovery_patch_intermediates/recovery_from_boot.p maxsize=385389312 blocksize=4224 total=318349634 reserve=3894528 #### make completed successfully (07:51:40 (hh:mm:ss)) #### zengjf@zengjf:~/myandroid$ 十三、磁盘空间占用情况: zengjf@zengjf:~/myandroid$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 97G 87G 5.2G 95% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 2.0G 4.0K 2.0G 1% /dev tmpfs 395M 1.1M 394M 1% /run none 5.0M 0 5.0M 0% /run/lock none 2.0G 152K 2.0G 1% /run/shm none 100M 52K 100M 1% /run/user zengjf@zengjf:~/myandroid$ 十四、u-boot编译: 1. 环境变量: 1. export ARCH=arm 2. export CROSS_COMPILE=~/myandroid/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- 2. 编译: 1. make mx6dlsabresdandroid_config 2. make 十五、kernel编译: 1. 环境变量: 1. export PATH=~/myandroid/bootable/bootloader/uboot-imx/tools:$PATH 2. export ARCH=arm 3. export CROSS_COMPILE=~/myandroid/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- 2. 编译: 1. make imx_v7_android_defconfig 2. make uImage LOADADDR=0x10008000 十六、boot.img编译: 1. cd ~/myandroid 2. source build/envsetup.sh 3. lunch sabresd_6dq-user 4. make bootimage 十七、.bashrc环境变量 ...... export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin export ARCH=arm export CROSS_COMPILE=~/myandroid/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- export PATH=~/myandroid/bootable/bootloader/uboot-imx/tools:$PATH export out=~/myandroid/out/target/product/sabresd_6dq export uboot=~/myandroid/bootable/bootloader/uboot-imx export kernel=~/myandroid/kernel_imx export win=/mnt/hgfs/ftp_root ......