FAQ03127 MTK修改代码编绎命令
2014-10-06 17:13
302 查看
[DESCRIPTION]
当修改一些代码时,使用什么编译命令可以最有效率
[Keyword]
编译命令 修改代码 最有效率 快速编译
[SOLUTION]
1: ./mk n(r) kernel; ./mk bootimage;当修改build-in 到kernel相关代码时,要使用此命令,具体文件参考如下:
alps/kernel/
alps/mediatek/platform/mt65xx/kernel/
alps/mediatek/source/kernel/
alps/mediatek/coustom/mt65xx/kernel/
alps/mediatek/coustom/common/kernel/
alps/mediatek/coustom/$porject_name$/kernel
...
ps: 由于./mk bootimag是很长的过程, 如果您没有修改到ramdisk相关的code, 可以参考以下FAQ加快编译.
只修改kernel的时候, 快速编译方法:
FAQ05444
2: ./mk n(r) k /module_path
当修改kernel module相关代码时,要使用此命令,具体文件参考如下:
alps/mediatek/platform/mt65xx/kernel/drivers/ccci/
alsp/mediatek/platform/mt65xx/gpu/
......
通常看对应文件夹的Makefile就知道是build in到kernel,还是ko,
obj-m += xxx, 表示build成ko module,
obj-y += xxx, 表示build in到bootimag.
ps: 要特别注意, 如果你new的时候是user版本, 在使用此命令的时候一定要加上
-oTARGET_BUILD_VARIANT=user, 否则会导致将之前new的结果全部删除,
3: ./mk n pl 当修改preloader相关代码时,要使用此命令,具体如下:
alps/mediatek/platform/mt65xx/preloader/
alps/mediatek/source/preloader/
alps/mediatek/coustom/mt65xx/preloader/
alps/mediatek/coustom/common/preloader/
alps/mediatek/coustom/$porject_name$/kernle
......
4: ./mk uboot 当修改uboot相关代码时,要使用此命令,具体如下:
alps/mediatek/platform/mt65xx/uboot/
alps/mediatek/source/uboot/
alps/bootable/bootloader/uboot/
alps/mediatek/coustom/mt65xx/uboot/
alps/mediatek/coustom/common/buoot/
alps/mediatek/coustom/$porject_name$/uboot/
......
5: ./mk systemimage 当修改system相关代码时使用此命令,具体文件目录如下:
alps/frameworks/
alps/packages/
alps/vendor/
alps/hardware/
alps/dalvik/
alsp/external
...........
new完一次后, 如果使用这个命令其实很耗时间, 建议参考6的做法,
6: ./mk mm ./module_path ; 主要build一些modules, 如lib库, native 可执行程序, jar库, jar
apk. 相关文件参考如下:
alps/frameworks/base #可以根据修改的某些文件, 进入更细的目录去build相关库.
alps/frameworks/native/libs/binder/ #native目录下有很多相关的lib库.
alps/frameworks/native/libs/binder/utils/
alps/external #主要是一些native的二进制可执行文件.
ps: build完后可以找到对应的目标文件直接push到手机, 也可以使用./mk snod直接快速打包新的system.img, 然后download. 可参考如下FAQ:
如何加速./mk snod打包: FAQ10299
7: ./mk recoverimage 当修改recover相关代码时使用此命令,具体如下:
alps/bootable/recovery/
alps/mediatek/customer/$project_name$/recovery/
......
8: ./mk factoryimage: 当修改factory相关代码时使用此命令,具体如下:
alps/mediatek/coustom/$project_name$/factory/
alps/mediatek/coustom/common/factory/
alps/mediatek/source/factory/
......
9: ./mk secroimage 当修改secro相关代码时使用此命令,具体如下:
alps/mediatek/source/secro/
alps/mediatek/coustom/$project_name$/secro/
[FAQ05444] 只修改kernel的时候, 快速编译方法
[Description]
通常我们修改kernel的时候, 需要下命令 ./mk xxx n k; ./mk bootimage; 这样需要比较长的时候.此FAQ提供快速编译方法
[Keyword]
kernel build
[Solution]
1:将如下code存为mkbootimage.sh
2:将mkbootimage.sh放在alps/目录下:
3:cp out/host/linux-x86/bin/mkbootimg ./
4:修改权限: chmod 777 mkbootimage.sh
5:执行: ./mkbootimage.sh project_name
GB,GB2上需要修改成
#!/bin/sh
PROJECT=$1
echo ./makeMtk $PROJECT new kernel
./makeMtk $PROJECT new kernel
echo mkbootimg --kernel kernel/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
./mkbootimg --kernel kernel/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
ICS,ICS2,JB2上需要修改成:
#!/bin/sh
PROJECT=$1
echo ./makeMtk $PROJECT new kernel
./makeMtk $PROJECT new kernel
echo mkbootimg --kernel kernel/out/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
./mkbootimg --kernel kernel/out/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
KK版本上需要修改成:
#!/bin/sh
if [ -z "$2" ]; then
OUT="out"
else
OUT=$2
fi
#########################################################################
# Please modify the following variables value according to the
# alps/mediatek/config/${PLATFORM}/BoardConfig.mk, if the corresponding
# variable is not defined in BoardConfig.mk, please use the default value
##################################################
#BOARD_KERNEL_BASE=0x40000000
BOARD_KERNEL_BASE=0x10000000 #default value
#BOARD_KERNEL_OFFSET=0x00008000
BOARD_KERNEL_OFFSET=0x00008000 #default value
#BOARD_RAMDISK_OFFSET=0x04000000
BOARD_RAMDISK_OFFSET=0x01000000 #default value
#BOARD_TAGS_OFFSET=0xE000000
BOARD_TAGS_OFFSET=0x00000100 #default value
#BOARD_KERNEL_CMDLINE="bootopt=64S3,32S1,32S1"
BOARD_KERNEL_CMDLINE="" #default value
#########################################################################
echo make $1 boot image @ $OUT ...
$OUT/host/linux-x86/bin/mkbootfs $OUT/target/product/$1/root | $OUT/host/linux-x86/bin/minigzip > $OUT/target/product/$1/ramdisk.img &&
mediatek/build/tools/mkimage $OUT/target/product/$1/ramdisk.img ROOTFS > $OUT/target/product/$1/ramdisk_android.img &&
mv $OUT/target/product/$1/ramdisk_android.img $OUT/target/product/$1/ramdisk.img &&
$OUT/host/linux-x86/bin/mkbootimg \
--base $BOARD_KERNEL_BASE \
--kernel_offset $BOARD_KERNEL_OFFSET \
--ramdisk_offset $BOARD_RAMDISK_OFFSET \
--tags_offset $BOARD_TAGS_OFFSET \
--cmdline "$BOARD_KERNEL_CMDLINE" \
--kernel $OUT/target/product/$1/obj/KERNEL_OBJ/kernel_$1.bin \
--ramdisk $OUT/target/product/$1/ramdisk.img \
--output $OUT/target/product/$1/boot.img
echo done
[FAQ10299] 如何加速./mk snod打包
[DESCRIPTION]
mm命令快速编译一个模块之后,一般用adb push到手机看效果,如果环境不允许用adb push或模块不经常改,希望直接放到image里,则可以用./mk snod,这个命令仅仅将system目录打包成system.img,然后方便直接下载,但是这个命令还是很慢(慢在搜索所有的Android.mk),有一种方法可以加速该编译到1分钟以内
[KEYWORD]
./mk snod
[SOLUTION]
修改alps/build/core/main.mk:
subdir_makefiles :=\
$(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git $(subdirs) Android.mk)
修改为:
ifneq ($(MAKECMDGOALS),snod)
subdir_makefiles :=\
$(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git $(subdirs) Android.mk)
endif
以上避免了不必要的耗时操作,加速./mk snod编译
PS: 这边有另外一个FAQ可以快速提升Android编译速度,强烈建议配置上(大约可提升50%):[FAQ10625]
提升Android编译速度
[FAQ10625] 提升Android编译速度
Android codebase都很大,编译一次都需要花很多时间,如果是preloader/lk/bootimage还好,但是Android的话都是非常久。
实际上这个编译时间还是可以进一步缩短!
[KEYWORD]
ccache
编译时间
提升
降低
[SOLUTION]
1. 移除modules_to_check
(1). Android默认是所有模块都会编译的(不管需不需要),这个有些冗余,可以通过修改编译系统不编译哪些没有用到的模块
(2). 修改方法:alps/build/core/main.mk
files: prebuilt \
$(modules_to_install) \
$(modules_to_check) \
$(INSTALLED_ANDROID_INFO_TXT_TARGET)
修改为:
files: prebuilt \
$(modules_to_install) \
$(INSTALLED_ANDROID_INFO_TXT_TARGET)
(3). 如果是ubi nand文件系统的项目(比如72 nand项目),还需要在alps/build/core/Makefile中:
$(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \
$(INSTALLED_RAMDISK_TARGET) \
$(INSTALLED_BOOTIMAGE_TARGET) \
$(recovery_binary) \
$(recovery_initrc) $(recovery_kernel) \
$(INSTALLED_2NDBOOTLOADER_TARGET) \
$(recovery_build_prop) $(recovery_resource_deps) \
$(recovery_fstab) \
$(recovery_gzip) $(recovery_sec_ko) \
$(RECOVERY_INSTALL_OTA_KEYS)
的前面添加:
ifeq ($(TARGET_USERIMAGES_USE_UBIFS),true)
$(INSTALLED_RECOVERYIMAGE_TARGET): $(recovery_ubiformat)
endif
否则会编译失败!
(4). 修改后Android编译时间降低16%~18%
(数据仅供参考)
(5). 此种方法google已在4.3版本默认应用了。
(6). 仅对new有效果,但是由于没有编译没有用到的模块,不仅节省时间还节省磁盘空间(节省out目录下的中间文件)。
2. 开启android ccache
(1). ccache是google默认就存放在codebase的工具,对于ccache的功能可以到网络搜寻资料。
(2). 设置cache大小(这一步一定要做!!),一个codebase需要大约5G的空间,如果你的编译环境有5个codebase在使用,那么需要25G的空间。设置小了还会引起编译时间延长!!
[1].GB版本:prebuilt/linux-x86/ccache/ccache -M
25G
[2].JB版本:prebuilts/misc/linux-x86/ccache/ccache -M
25G
(3). 开启的方法:
[1].命令行增加USE_CCACHE=1即可:./mk -o=USE_CCACHE=1 n。如果是user版本开启ccahce的话,可以这样:./mk -o=USE_CCACHE=1,TARGET_BUILD_VARIANT=user n。
[2].建议:添加到环境变量(其他方式亦可):修改alps/makeMtk,在#!/usr/bin/perl之后新建一行,填写$ENV{"USE_CCACHE"} = 1;
(4). 第1次编译会花多一点时间建立cache,之后即可享受ccache带来的好处,降低所有使用gcc的编译时间,大约25%~30%。
[1].可以通过ccache -s查看cache信息,如果满了可以用ccache -C清除所有。在满了状态下编译新codebase,将会旧的那个清除,这会降低效率,所以cache一定要设置正确!
(6). 对mm/new/remake android都有效果。
3. 开启kernel ccache
(1).
以上ccache只对编译android有效,kernel部分需要额外设置才行
(2). alps/kernel/Makefile文件中的
S = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld.bfd
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
之后添加:
ifneq ($(USE_CCACHE),)
export CCACHE_COMPILERCHECK := content
export CCACHE_SLOPPINESS := time_macros,include_file_mtime,file_macro
export CCACHE_BASEDIR := /
ccache := $(strip $(wildcard $(PWD)/../prebuilts/misc/linux-x86/ccache/ccache))
ifdef ccache
ifneq ($(ccache),$(firstword $(CC)))
CC := $(ccache) $(CC)
endif
ccache =
endif
endif
(3). 这样在编译kernel时也可以享受到ccache带来编译时间的缩短。
以上两种方法优化后大约可降低50%的编译时间,也就是说优化前需要1小时编译时间,优化后半小时就完成了。
[DESCRIPTION]
当修改一些代码时,使用什么编译命令可以最有效率
[Keyword]
编译命令 修改代码 最有效率 快速编译
[SOLUTION]
1: ./mk n(r) kernel; ./mk bootimage;当修改build-in 到kernel相关代码时,要使用此命令,具体文件参考如下:
alps/kernel/
alps/mediatek/platform/mt65xx/kernel/
alps/mediatek/source/kernel/
alps/mediatek/coustom/mt65xx/kernel/
alps/mediatek/coustom/common/kernel/
alps/mediatek/coustom/$porject_name$/kernel
...
ps: 由于./mk bootimag是很长的过程, 如果您没有修改到ramdisk相关的code, 可以参考以下FAQ加快编译.
只修改kernel的时候, 快速编译方法:
FAQ05444
2: ./mk n(r) k /module_path
当修改kernel module相关代码时,要使用此命令,具体文件参考如下:
alps/mediatek/platform/mt65xx/kernel/drivers/ccci/
alsp/mediatek/platform/mt65xx/gpu/
......
通常看对应文件夹的Makefile就知道是build in到kernel,还是ko,
obj-m += xxx, 表示build成ko module,
obj-y += xxx, 表示build in到bootimag.
ps: 要特别注意, 如果你new的时候是user版本, 在使用此命令的时候一定要加上
-oTARGET_BUILD_VARIANT=user, 否则会导致将之前new的结果全部删除,
3: ./mk n pl 当修改preloader相关代码时,要使用此命令,具体如下:
alps/mediatek/platform/mt65xx/preloader/
alps/mediatek/source/preloader/
alps/mediatek/coustom/mt65xx/preloader/
alps/mediatek/coustom/common/preloader/
alps/mediatek/coustom/$porject_name$/kernle
......
4: ./mk uboot 当修改uboot相关代码时,要使用此命令,具体如下:
alps/mediatek/platform/mt65xx/uboot/
alps/mediatek/source/uboot/
alps/bootable/bootloader/uboot/
alps/mediatek/coustom/mt65xx/uboot/
alps/mediatek/coustom/common/buoot/
alps/mediatek/coustom/$porject_name$/uboot/
......
5: ./mk systemimage 当修改system相关代码时使用此命令,具体文件目录如下:
alps/frameworks/
alps/packages/
alps/vendor/
alps/hardware/
alps/dalvik/
alsp/external
...........
new完一次后, 如果使用这个命令其实很耗时间, 建议参考6的做法,
6: ./mk mm ./module_path ; 主要build一些modules, 如lib库, native 可执行程序, jar库, jar
apk. 相关文件参考如下:
alps/frameworks/base #可以根据修改的某些文件, 进入更细的目录去build相关库.
alps/frameworks/native/libs/binder/ #native目录下有很多相关的lib库.
alps/frameworks/native/libs/binder/utils/
alps/external #主要是一些native的二进制可执行文件.
ps: build完后可以找到对应的目标文件直接push到手机, 也可以使用./mk snod直接快速打包新的system.img, 然后download. 可参考如下FAQ:
如何加速./mk snod打包: FAQ10299
7: ./mk recoverimage 当修改recover相关代码时使用此命令,具体如下:
alps/bootable/recovery/
alps/mediatek/customer/$project_name$/recovery/
......
8: ./mk factoryimage: 当修改factory相关代码时使用此命令,具体如下:
alps/mediatek/coustom/$project_name$/factory/
alps/mediatek/coustom/common/factory/
alps/mediatek/source/factory/
......
9: ./mk secroimage 当修改secro相关代码时使用此命令,具体如下:
alps/mediatek/source/secro/
alps/mediatek/coustom/$project_name$/secro/
[FAQ05444] 只修改kernel的时候, 快速编译方法
[Description]
通常我们修改kernel的时候, 需要下命令 ./mk xxx n k; ./mk bootimage; 这样需要比较长的时候.此FAQ提供快速编译方法
[Keyword]
kernel build
[Solution]
1:将如下code存为mkbootimage.sh
2:将mkbootimage.sh放在alps/目录下:
3:cp out/host/linux-x86/bin/mkbootimg ./
4:修改权限: chmod 777 mkbootimage.sh
5:执行: ./mkbootimage.sh project_name
GB,GB2上需要修改成
#!/bin/sh
PROJECT=$1
echo ./makeMtk $PROJECT new kernel
./makeMtk $PROJECT new kernel
echo mkbootimg --kernel kernel/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
./mkbootimg --kernel kernel/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
ICS,ICS2,JB2上需要修改成:
#!/bin/sh
PROJECT=$1
echo ./makeMtk $PROJECT new kernel
./makeMtk $PROJECT new kernel
echo mkbootimg --kernel kernel/out/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
./mkbootimg --kernel kernel/out/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
KK版本上需要修改成:
#!/bin/sh
if [ -z "$2" ]; then
OUT="out"
else
OUT=$2
fi
#########################################################################
# Please modify the following variables value according to the
# alps/mediatek/config/${PLATFORM}/BoardConfig.mk, if the corresponding
# variable is not defined in BoardConfig.mk, please use the default value
##################################################
#BOARD_KERNEL_BASE=0x40000000
BOARD_KERNEL_BASE=0x10000000 #default value
#BOARD_KERNEL_OFFSET=0x00008000
BOARD_KERNEL_OFFSET=0x00008000 #default value
#BOARD_RAMDISK_OFFSET=0x04000000
BOARD_RAMDISK_OFFSET=0x01000000 #default value
#BOARD_TAGS_OFFSET=0xE000000
BOARD_TAGS_OFFSET=0x00000100 #default value
#BOARD_KERNEL_CMDLINE="bootopt=64S3,32S1,32S1"
BOARD_KERNEL_CMDLINE="" #default value
#########################################################################
echo make $1 boot image @ $OUT ...
$OUT/host/linux-x86/bin/mkbootfs $OUT/target/product/$1/root | $OUT/host/linux-x86/bin/minigzip > $OUT/target/product/$1/ramdisk.img &&
mediatek/build/tools/mkimage $OUT/target/product/$1/ramdisk.img ROOTFS > $OUT/target/product/$1/ramdisk_android.img &&
mv $OUT/target/product/$1/ramdisk_android.img $OUT/target/product/$1/ramdisk.img &&
$OUT/host/linux-x86/bin/mkbootimg \
--base $BOARD_KERNEL_BASE \
--kernel_offset $BOARD_KERNEL_OFFSET \
--ramdisk_offset $BOARD_RAMDISK_OFFSET \
--tags_offset $BOARD_TAGS_OFFSET \
--cmdline "$BOARD_KERNEL_CMDLINE" \
--kernel $OUT/target/product/$1/obj/KERNEL_OBJ/kernel_$1.bin \
--ramdisk $OUT/target/product/$1/ramdisk.img \
--output $OUT/target/product/$1/boot.img
echo done
[FAQ10299] 如何加速./mk snod打包
[DESCRIPTION]
mm命令快速编译一个模块之后,一般用adb push到手机看效果,如果环境不允许用adb push或模块不经常改,希望直接放到image里,则可以用./mk snod,这个命令仅仅将system目录打包成system.img,然后方便直接下载,但是这个命令还是很慢(慢在搜索所有的Android.mk),有一种方法可以加速该编译到1分钟以内
[KEYWORD]
./mk snod
[SOLUTION]
修改alps/build/core/main.mk:
subdir_makefiles :=\
$(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git $(subdirs) Android.mk)
修改为:
ifneq ($(MAKECMDGOALS),snod)
subdir_makefiles :=\
$(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git $(subdirs) Android.mk)
endif
以上避免了不必要的耗时操作,加速./mk snod编译
PS: 这边有另外一个FAQ可以快速提升Android编译速度,强烈建议配置上(大约可提升50%):[FAQ10625]
提升Android编译速度
[FAQ10625] 提升Android编译速度
Android codebase都很大,编译一次都需要花很多时间,如果是preloader/lk/bootimage还好,但是Android的话都是非常久。
实际上这个编译时间还是可以进一步缩短!
[KEYWORD]
ccache
编译时间
提升
降低
[SOLUTION]
1. 移除modules_to_check
(1). Android默认是所有模块都会编译的(不管需不需要),这个有些冗余,可以通过修改编译系统不编译哪些没有用到的模块
(2). 修改方法:alps/build/core/main.mk
files: prebuilt \
$(modules_to_install) \
$(modules_to_check) \
$(INSTALLED_ANDROID_INFO_TXT_TARGET)
修改为:
files: prebuilt \
$(modules_to_install) \
$(INSTALLED_ANDROID_INFO_TXT_TARGET)
(3). 如果是ubi nand文件系统的项目(比如72 nand项目),还需要在alps/build/core/Makefile中:
$(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \
$(INSTALLED_RAMDISK_TARGET) \
$(INSTALLED_BOOTIMAGE_TARGET) \
$(recovery_binary) \
$(recovery_initrc) $(recovery_kernel) \
$(INSTALLED_2NDBOOTLOADER_TARGET) \
$(recovery_build_prop) $(recovery_resource_deps) \
$(recovery_fstab) \
$(recovery_gzip) $(recovery_sec_ko) \
$(RECOVERY_INSTALL_OTA_KEYS)
的前面添加:
ifeq ($(TARGET_USERIMAGES_USE_UBIFS),true)
$(INSTALLED_RECOVERYIMAGE_TARGET): $(recovery_ubiformat)
endif
否则会编译失败!
(4). 修改后Android编译时间降低16%~18%
(数据仅供参考)
(5). 此种方法google已在4.3版本默认应用了。
(6). 仅对new有效果,但是由于没有编译没有用到的模块,不仅节省时间还节省磁盘空间(节省out目录下的中间文件)。
2. 开启android ccache
(1). ccache是google默认就存放在codebase的工具,对于ccache的功能可以到网络搜寻资料。
(2). 设置cache大小(这一步一定要做!!),一个codebase需要大约5G的空间,如果你的编译环境有5个codebase在使用,那么需要25G的空间。设置小了还会引起编译时间延长!!
[1].GB版本:prebuilt/linux-x86/ccache/ccache -M
25G
[2].JB版本:prebuilts/misc/linux-x86/ccache/ccache -M
25G
(3). 开启的方法:
[1].命令行增加USE_CCACHE=1即可:./mk -o=USE_CCACHE=1 n。如果是user版本开启ccahce的话,可以这样:./mk -o=USE_CCACHE=1,TARGET_BUILD_VARIANT=user n。
[2].建议:添加到环境变量(其他方式亦可):修改alps/makeMtk,在#!/usr/bin/perl之后新建一行,填写$ENV{"USE_CCACHE"} = 1;
(4). 第1次编译会花多一点时间建立cache,之后即可享受ccache带来的好处,降低所有使用gcc的编译时间,大约25%~30%。
[1].可以通过ccache -s查看cache信息,如果满了可以用ccache -C清除所有。在满了状态下编译新codebase,将会旧的那个清除,这会降低效率,所以cache一定要设置正确!
(6). 对mm/new/remake android都有效果。
3. 开启kernel ccache
(1).
以上ccache只对编译android有效,kernel部分需要额外设置才行
(2). alps/kernel/Makefile文件中的
S = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld.bfd
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
之后添加:
ifneq ($(USE_CCACHE),)
export CCACHE_COMPILERCHECK := content
export CCACHE_SLOPPINESS := time_macros,include_file_mtime,file_macro
export CCACHE_BASEDIR := /
ccache := $(strip $(wildcard $(PWD)/../prebuilts/misc/linux-x86/ccache/ccache))
ifdef ccache
ifneq ($(ccache),$(firstword $(CC)))
CC := $(ccache) $(CC)
endif
ccache =
endif
endif
(3). 这样在编译kernel时也可以享受到ccache带来编译时间的缩短。
以上两种方法优化后大约可降低50%的编译时间,也就是说优化前需要1小时编译时间,优化后半小时就完成了。
相关文章推荐
- [FAQ03127]当修改一些代码时,MTK快捷编译命令
- MTK-当修改一些代码时,使用什么编译命令可以最有效率
- MTK当修改一些代码时,使用什么编译命令可以最有效率
- MTK平台,当修改一些代码时,使用什么编译命令可以最有效率
- MTK平台,当修改一些代码时,使用什么编译命令可以最有效率
- mtk UART代码修改配置
- Linux chmod命令修改文件与文件夹权限命令代码
- 毕设笔记--Git提交修改的代码命令
- 给ACAD增加个命令,修改外部DWG文件,给所有LINE加扩展数据的完整的ARX代码...
- Linux chmod命令修改文件与文件夹权限命令代码
- [汇编语言]debug中用r命令修改cs、ip,并不能影响a命令的代码起始写入地址?
- 当修改一些代码时,使用什么编译命令可以最有效率
- SVN代码回滚命令 即取消对代码的修改
- 当修改一些代码时,使用什么编译命令可以最有效率
- MTK平台修改imgsensor的hal代码后快速编译
- 如何在修改mysql代码添加新SQL命令
- [FAQ03127] 当修改一些代码时,使用什么编译命令可以最有效率
- SVN代码回滚命令 即取消对代码的修改
- mtk android代码如何修改mbr地址
- 在串口下添加set和get命令(修改Linux内核代码)