博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android快速编译
阅读量:3897 次
发布时间:2019-05-23

本文共 4868 字,大约阅读时间需要 16 分钟。

1. 获取编译所用的命令和配置

source build/envsetup.shlunch xx make showcommands bootimage >build.log      //通过参数showcommands 将编译的命令显示出来

2. 制作编译脚本

touch buld_kernel.sh               //创建脚本复制第三步编译的build.log中 bin/bash -c 开始的每一段到buld_kernel.sh里在脚本之前加上 source 和 lunch 就可以了chmod +x buld_kernel.sh       //增加可执行全限./build_kernel.sh             //运行编译脚本,以后每次编译使用这个脚本就可以了

3. 高通平台sdm450例子,下面是制作的脚本

source build/envsetup.shlunch 19     /bin/bash -c "(if [ ! -z \"hq_sdm450_defconfig\" ]; then            rm -f ../../out/target/product/hq_sdm450/obj/kernel/msm-4.9/.config;            make -j2 -C kernel/msm-4.9 O=../../out/target/product/hq_sdm450/obj/kernel/msm-4.9 DTC_EXT=dtc CONFIG_BUILD_ARM64_DT_OVERLAY=y ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- hq_sdm450_defconfig;             make -j2 -C kernel/msm-4.9 O=../../out/target/product/hq_sdm450/obj/kernel/msm-4.9 DTC_EXT=dtc CONFIG_BUILD_ARM64_DT_OVERLAY=y ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- headers_install;         if [ -d \"out/target/product/hq_sdm450/obj/kernel/msm-4.9/usr/include/bringup_headers\" ]; then                 cp -Rf  out/target/product/hq_sdm450/obj/kernel/msm-4.9/usr/include/bringup_headers/* out/target/product/hq_sdm450/obj/kernel/msm-4.9/usr/include/ ;            fi ;            fi ) && (if [ \"hq_sdm450_defconfig\" != \"hq_sdm450_defconfig\" ]; then            echo \"Used a different defconfig for header generation\";          rm -f ../../out/target/product/hq_sdm450/obj/kernel/msm-4.9/.config;            make -j2 -C kernel/msm-4.9 O=../../out/target/product/hq_sdm450/obj/kernel/msm-4.9 DTC_EXT=dtc CONFIG_BUILD_ARM64_DT_OVERLAY=y ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- hq_sdm450_defconfig; fi ) && (if [ ! -z \"\" ]; then             echo \"Overriding kernel config with ''\";          echo  >> out/target/product/hq_sdm450/obj/kernel/msm-4.9/.config;           make -j2 -C kernel/msm-4.9 O=../../out/target/product/hq_sdm450/obj/kernel/msm-4.9 DTC_EXT=dtc CONFIG_BUILD_ARM64_DT_OVERLAY=y ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- oldconfig; fi )"/bin/bash -c "(rm -rf out/target/product/hq_sdm450/obj/KERNEL_OBJ ) && (ln -s kernel/msm-4.9 out/target/product/hq_sdm450/obj/KERNEL_OBJ )"/bin/bash -c "(rm -rf out/target/product/hq_sdm450/obj/kernel/msm-4.9/arch/arm64/boot/dts ) && (make -j2 -C kernel/msm-4.9 O=../../out/target/product/hq_sdm450/obj/kernel/msm-4.9 DTC_EXT=dtc CONFIG_BUILD_ARM64_DT_OVERLAY=y ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- KCFLAGS=-mno-android ) && (make -j2 -C kernel/msm-4.9 O=../../out/target/product/hq_sdm450/obj/kernel/msm-4.9 DTC_EXT=dtc CONFIG_BUILD_ARM64_DT_OVERLAY=y ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- KCFLAGS=-mno-android modules ) && (make -j2 -C kernel/msm-4.9 O=../../out/target/product/hq_sdm450/obj/kernel/msm-4.9 INSTALL_MOD_PATH=../../../dlkm INSTALL_MOD_STRIP=1 DTC_EXT=dtc CONFIG_BUILD_ARM64_DT_OVERLAY=y ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- modules_install ) && (mdpath=\`find out/target/product/hq_sdm450/dlkm/lib/modules -type f -name modules.dep\`; if [ \"\$mdpath\" != \"\" ];then mpath=\`dirname \$mdpath\`; ko=\`find \$mpath/kernel -type f -name *.ko\`; for i in \$ko; do mv \$i out/target/product/hq_sdm450/dlkm/lib/modules/; done; fi ) && (mdpath=\`find out/target/product/hq_sdm450/dlkm/lib/modules -type f -name modules.dep\`; if [ \"\$mdpath\" != \"\" ];then mpath=\`dirname \$mdpath\`; rm -rf \$mpath; fi )"/bin/bash -c "(rm -f out/target/product/hq_sdm450/kernel ) && (cp \"out/target/product/hq_sdm450/obj/kernel/msm-4.9/arch/arm64/boot/Image.gz-dtb\" \"out/target/product/hq_sdm450/kernel\" )"/bin/bash -c "(out/host/linux-x86/bin/mkbootimg  --kernel out/target/product/hq_sdm450/kernel --base 0x80000000 --pagesize 2048 --cmdline \"console=ttyMSM0,115200,n8 androidboot.console=ttyMSM0 androidboot.hardware=qcom msm_rtb.filter=0x237 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 androidboot.bootdevice=7824900.sdhci earlycon=msm_serial_dm,0x78af000 firmware_class.path=/vendor/firmware_mnt/image androidboot.usbconfigfs=true loop.max_part=7 buildvariant=userdebug\" --os_version 9 --os_patch_level 2018-10-05 --header_version 1 --output out/target/product/hq_sdm450/boot.img ) && (size=\$(for i in out/target/product/hq_sdm450/boot.img; do stat --format \"%s\" \"\$i\" | tr -d '\\n'; echo +; done; echo 0); total=\$(( \$( echo \"\$size\" ) )); printname=\$(echo -n \"out/target/product/hq_sdm450/boot.img\" | tr \" \" +); maxsize=\$((   0x04000000-69632)); if [ \"\$total\" -gt \"\$maxsize\" ]; then echo \"error: \$printname too large (\$total > \$maxsize)\"; false; elif [ \"\$total\" -gt \$((maxsize - 32768)) ]; then echo \"WARNING: \$printname approaching size limit (\$total now; limit \$maxsize)\"; fi ) && (out/host/linux-x86/bin/avbtool add_hash_footer       --image out/target/product/hq_sdm450/boot.img       --partition_size 0x04000000     --partition_name boot )"

转载地址:http://beuen.baihongyu.com/

你可能感兴趣的文章
用C#通过888-TT打印中文标签
查看>>
sendmail 出现 My unqualified host name的解决办法
查看>>
彻底解决lazarus安装组件后烦人的编译时单元找不到的问题!
查看>>
Delphi的参数修饰const/var/output 与C++的对应关系
查看>>
C++ free与delete区别
查看>>
VC的字符串转换atlconv的使用
查看>>
Twitter的分布式自增ID算法snowflake (Java版)
查看>>
阻抗测量基础
查看>>
天线设计相关性能参数
查看>>
Linux Centos7 rabbitmq安装及集群配置
查看>>
CentOS7 安装配置FastDFS
查看>>
git 拉取gitlab 代码
查看>>
递归算法的时间复杂度
查看>>
数据结构之图(存储结构、遍历)
查看>>
使用sizeof计算类的大小
查看>>
乐观锁与悲观锁——解决并发问题
查看>>
operator 类型转换及重载
查看>>
HTTP状态码
查看>>
TCP/IP详解--举例明白发送/接收缓冲区、滑动窗口协议之间的关系
查看>>
TCP/IP详解--再次深入理解TCP网络编程中的send和recv
查看>>