[I.MX6Q-Android6.0.1]源码编译笔记

[I.MX6Q-Android6.0.1]源码编译笔记

具体请参考leavestrong写的博客[I.MX6Q][Android6.0.1_r3]之源码获取及编译
此次为我编译过程中遇到的一些坑, 为了以后编译过程再次碰到类似的坑而浪费时间, 故在此做笔记记录.

  • 获取Android6.0.1_r3源码
mkdir android-6.0
mkdir bin
curl https://storage-googleapis.lug.ustc.edu.cn/git-repo-downloads/repo > bin/repo

      然后打开repo修改REPO_URL为国内可      访问的源,修改如下:
      REPO_URL = 'https://gerrit-googlesource.lug.ustc.edu.cn/git-repo'
      接着进入源码目录获取源码:

chmod a+x bin/repo
cd android-6.0
../bin/repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-6.0.1_r3
../bin/repo sync
  • 获取I.MX Kernel
    在leavestrong写的博客中源码需要切换到 m6.0.1_1.0.0-ga分支, 但NXP官网已经不提供该该分支的补丁, 当前NXP提供给Android 6.0.1的补丁版本为M6.0.1_2.1.0, 故切换到m6.0.1_2.1.0-ga分支中:
cd android-6.0
git clone git://git.freescale.com/imx/linux-2.6-imx.git kernel_imx
cd kernel_imx
git checkout m6.0.1_2.1.0-ga
  • 获取I.MX U-boot
cd android-6.0/bootable/bootloader/
git clone git://git.freescale.com/imx/uboot-imx.git uboot-imx
cd uboot-imx
git checkout m6.0.1_2.1.0-ga
  • *获取源码补丁
    进入NXP官网后, 按如下路径查找具体的源码补丁:
    这里写图片描述
    具体获取补丁地址: i.MX 6 / i.MX 7 / i.MX 8 Series Software and Development Tool Resources
    然后拉到网页的底半部寻找如下部分并点击source code 即可下载:
    这里写图片描述
  • 为源码打I.MX的补丁
    将补丁与源码目录, bin目录放到同一目录下bin解压, 如下所示这里写图片描述:
cd android-6.0
source ../android_M6.0.1_2.1.0_source/code/M6.0.1_2.1.0/and_patch.sh
c_patch ../android_M6.0.1_2.1.0_source/code/M6.0.1_2.1.0/ imx_M6.0.1_2.1.0

如果以下提示,说明你已经成功打补丁
*****************************************************************
Success: Now you can build the Android code for FSL i.MX platform
*****************************************************************

  注: 如果出现git获取不到对应目录的版本号, 可以删除android_M6.0.1_2.1.0_source/code/M6.0.1_2.1.0/baseversion中对应目录的一行,例如:
        vi ../android_M6.0.1_2.1.0_source/code/M6.0.1_2.1.0/baseversion
        然后将204行删除:
        这里写图片描述
- 编译Android

cd android-6.0
echo export USE_CCACHE=1 >> ~/.bashrc //设置编译器使用高速缓存
prebuilts/misc/linux-x86/ccache/ccache -M 50G
lunch sabresd_6dq-user
make -j4

编译后在< AndroidSDK >out/target/product/sabresd_6dq/可看到u-boot.imx boot.img recovery.img system.img 等文件, 且存在如下几个目录:
  root目录:安卓root文件系统,里面存放init init.rc等文件,会被挂载到 /
  system目录:安卓system目录,存放二进制文件和库,会被挂载到 /system
  data目录:安卓data目录,存放用户的一些私有文件, 会被挂载到 /data

小技巧: 可以使用 make -j4 > /mnt/share/kernel/AndroidSrc/mk.log 来保存编译日志与错误日志


  • 单独编译u-boot镜像
cd android-6.0/bootable/bootloader/uboot-imx
export ARCH=arm
export CROSS_COMPILE=/mnt/share/kernel/AndroidSrc/android-6.0/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-
make distclean
make mx6qsabresdandroid_config
make
  • 单独编译uImage镜像
export PATH=android-6.0/bootable/bootloader/uboot-imx/tools:$PATH
cd android-6.0/kernel_imx
export ARCH=arm
export CROSS_COMPILE=/mnt/share/kernel/AndroidSrc/android-6.0/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-
make imx_v7_android_defconfig
make KCFLAGS=-mno-android
make uImage LOADADDR=0x10008000 KCFLAGS=-mno-android
  • 单独编译boot.img镜像
    boot.img:集成内核的zImage、ramdisk.img、dtb(设备树文件)还有启动参数。
    ramdisk.img:由root目录生成,然后被集成到boot.img,不会被直接使用。
cd android-6.0
source build/envsetup.sh
lunch sabresd_6dq-user
make bootimage
  • 单独编译recovery.img镜像
    recovery.img:EXT4格式的img文件,由recovery目录生成。
cd android-6.0
source build/envsetup.sh
lunch sabresd_6dq-user
make recoveryimage
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值