之前安卓7.1的编译所使用的是MTK提供的3.18内核,但并未对Modem进行编译和配置。
- 查看ReleseNote发现需要查看"Build_Configure_Modem_MOLY"这张表,解压MT67xx_(xxx)_MOLY.LR9.W1444.MD.LWTG.MP.Vx.tar.gz到某文件,并在make目录下查看
图 一
- 执行的命令则是./make.sh "SM67xx(Lxx_xxx).mak" new,但是这里需要的软件依赖跟编译安卓7.1的不同。需要的arm-none-eabi-gcc则需要编译,复制到tools目录下,并使其具有 可执行权限。包括libexec下的"cc1"。
图二
- Linux下Perl的安装(转)http://www.cnblogs.com/huanghongbo/p/6223316.html
- http://ftp.gnu.org/gnu/make/ GNU make下载 ./Configure ->make->make install 重启终端就可以看到版本了
- http://ftp.gnu.org/gnu/bash/ SEHELL下载,但是未找到4.1.5的版本,只能以高于推荐版本执行。
- gcc-arm-none-eabi 需要4.6及以上
- 本地gcc建议使用4.5~4.9的,5以上不知道跟下面的link问题是否有关
TIP:执行后make " " new后,会遇到一个找不到生成的.elf文件,让你查看link.log的错误,但是里面实际是没有任何输出的。只在网上找到以下的说明。
Link过程采用了auto memory configuration的代码动态调整机制。调整过程:假如上一次link成功后,工程会保留上一次link的配置文件,以后每次link都会先按照上一次link成功的配置文件来链接。如果第一次link失败,工程并不会报错和停止编译,而是进行auto memory configuration,将代码重新分配到不同的段(不同的段有不同的压缩率,比如ZIMAGE段压缩率是60%,Alice段的压缩率是83%,ROM段没有压缩),以达到ROM空间和RAM空间的使用的平衡。然后根据auto memory configuration调整后的配置进行第二次link, 如果第二次lin成功,表明编译成功,并且保留该配置;如果第二次link失败,这时工程报错并停止编译。
但是几个log虽然都有异常,但是无从下手。不过在移动文件到其他目录后就编译过了,并且将其移回原目录也编译成功了...
同时需要注意tools/NVRAMStatistic/nvram_auto_gen.mak 下高层次版本问题,16.04自带的5.4.0版本实际是过高的,需要修改
ifeq ($(strip $(OS_VERSION)),MSWin32)
GCC := "tools/MinGW/bin/gcc.exe"
LINKER_SCRIPT := tools/NVRAMStatistic/src/nvram_auto_gen_windows.txt
MV := perl tools/init/move.pl -f
override PATH := tools/MinGW/bin:${PATH}
export $(PATH)
else
GCC := "/usr/bin/gcc"
LINKER_SCRIPT := tools/NVRAMStatistic/src/nvram_auto_gen_linux.txt
MV := mv
endif
下载某版本可以用update-alternatives --config gcc进行选择,也可以直接更改GCC := "/%yourpath%/gcc"。
2.执行
perl device/mediatek/build/build/tools/modemRenameCopy.pl [Modem 代码路径] [编译Modem所使用的.mak文件 ]
如 perl *****/modemRenameCopy.pl ./Moly/ MT67xx_LTG_DSDS
- 自动为所要复制到alps/vendor/mediatek/proprietary/modem/${modem} 下的文件重命名,并生成一个Android.mk文件,alps/vendor/mediatek/proprietary/该路径下是没有modem这个文件夹的,需要自己创建。
- 请确保在alps/vendor/mediatek/proprietary/modem/中有一个Android.mk。 你可以从alps/device/mediatek/build/build/tools/modem/modem_Android.mk复制到alps/vendor/mediatek/proprietary/modem/Android.mk
3.在alps/device/${company}/${project}/ProjectConfig.mk找到相应的ProjectConfig.mk,配置CUSTOM_MODEM,保证跟自己创建的目录alps/vendor/mediatek/proprietary/modem/${modem}名称一致。
然后再/alps下重新编译