MTK8127源码编译出现的错误及相关解决办法

时间:2022-04-18 04:59:46
/**
* date:2016/8/17
* author: Y.X .YANG
*/
按照开发文档提示:
1、MTK提供的开发包目录下有若干个.aa .ab .ac ...的分压缩包。此时应当将这些压缩包并包,使用以下命令:
# cat MT8127_M0_MP8_0407_t8370_emmc.tar.gz* >> MT8127_M0_MP8_0407_t8370_emmc.tar.gz

2、对 MT8127_M0_MP8_0407_t8370_emmc.tar.gz 进行解包。使用以下命令:
# tar -xzvf MT8127_M0_MP8_0407_t8370_emmc.tar.gz
解压完成后在当前目录下会生成一个 MT8127_M0_MP8_0407 的目录,cd 进去后就是MTK的源码工程

3、MTK工程的编译
(1)在当前目录下 终端输入命令:source build/envsetup.sh
(2)lunch有两个版本,分别是eng版本还有Userdebug版本,这里我们选择eng版本进行lunch
lunch的选项选择第20个选项:em-t8370-emmc-eng
# lunch em-t830-emmc-eng
(3)开始编译
# make -j36 2 >&1 | tee build.log

在编译的过程中,通常出错会遇到以下问题,
1、
(1)文档指出,编译的OS至少需要LINUX Ubuntu 14.04这个版本
(2)内存空间要足够大,需要至少100G以上
(3)Java JDK的版本,至少需要 1.7.0_55以上的版本
(4)GNU Make v3.81 or above

注意观察编译调试日志出现的log,分析log可以很容易知道以上出错的原因。
eg:
============================================
Checking build tools versions...
************************************************************
You are attempting to build with the incorrect version
of java.

Your version is: java version "1.6.0_45" Java(TM) SE Runtime Environment (build 1.6.0_45-b06) Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode).
The required version is: "1.7.x"

Please follow the machine setup instructions at
https://source.android.com/source/initializing.html
************************************************************
build/core/main.mk:171: *** stop。 停止。

以上的log信息表示JDK版本信息以及服务器编译环境过低,需要及时更新。


2、如果以上的环境配置都没有问题
编译过程中如果提示某某.bin 文件依赖于 ....文件夹的时候
eg :
make: *** No rule to make target `bootable/bootloader/lk/eng/lk.bin', needed by `out/target/product/em_t8370_emmc/lk.bin'. Stop.
# find . -name lk.bin
./vendor/mediatek/proprietary/bootable/bootloader/lk/eng/lk.bin
./vendor/mediatek/proprietary/bootable/bootloader/lk/user/lk.bin
此时会找到以上这两个同名文件,我们工程是eng版本,所以需要cp ./vendor/mediatek/proprietary/bootable/bootloader/lk/eng/lk.bin
这个文件。

找到对应的lk.bin文件后,拷贝到对应的这两个目录里去,此时发现在MTK源码工程bootable这个目录下没有bootloader/lk/eng/这些文件夹
这时需要在相应的目录下创建:
# mkdir bootable/bootloader/lk/eng/ -p
创建完相关目录后,
拷贝用以下命令,在MTK源码目录下:
# cp ./vendor/mediatek/proprietary/bootable/bootloader/lk/eng/lk.bin bootable/bootloader/lk/eng/
再进行make

如果后续如出现make: *** No rule to make target `xxx.bin', needed by `xxx.bin'. Stop.这样的问题时,使用以上方法解决。
如果没有,工程编译成功需要等待1个小时左右的时间。


3、编译完成后:会在目录/mnt/sdb1/yangyx/MT8127_M0_MP8_0407/out/target/product/em_t8370_emmc产生若干个文件
root@pst-Z97X-UD3H:/mnt/sdb1/yangyx/MT8127_M0_MP8_0407/out/target/product/em_t8370_emmc# ls
android-info.txt EBR1 MBR ramdisk.img_raw root
boot.img EBR2 MT8127_Android_scatter.txt ramdisk-recovery-bthdr.img secro.img
cache gen obj ramdisk-recovery.img symbols
cache.img installed-files.txt ota_scatter.txt recovery system
clean_steps.mk kernel preloader_em_t8370_emmc.bin recovery_bthdr.img system.img
custom_build_verno lk.bin previous_build_config.mk recovery.id tz.img
data logo.bin ramdisk.img recovery.img userdata.img

将编译生成的以下文件拷贝到Window系统下相关目录后用flash_tool.exe工具烧写进开发板,烧写工具文档说明一并上传.。
boot.img cache.img EBR1 EBR2 lk.bin logo.bin MBR MT8127_Android_scatter.txt preloader_em_t8370_emmc.bin
recovery.img secro.img system.img userdata.img