作者: Linux-小企鹅
博客地址:http://blog.csdn.net/u012319379/article/details/77822167
上一篇分析了[分步编译之uboot编译03 ] (http://blog.csdn.net/u012319379/article/details/77816782),这一篇分析下内核编译。
脚本分析
- build_kernel函数分析
function build_kernel()
{
if [ ${BUILD_ALL} == "true" ] || [ ${BUILD_KERNEL} == "true" ]; then
echo ""
echo "=============================================="
echo "build kernel"
echo "=============================================="
if [ ! -e ${TOP}/kernel ]; then
cd ${TOP}
ln -s linux/kernel/kernel-3.4.39 kernel
fi
cd ${TOP}/kernel
#根据ANDROID_VERSION_MAJOR变量的值选择配置文件
local kernel_config=
if [ ${ANDROID_VERSION_MAJOR} == "4" ]; then
kernel_config=${CHIP_NAME}_${BOARD_PURE_NAME}_android_defconfig
elif [ ${ANDROID_VERSION_MAJOR} == "5" ]; then
kernel_config=${CHIP_NAME}_${BOARD_PURE_NAME}_android_lollipop_defconfig
else
echo "ANDROID_VERSION_MAJOR is abnormal!!! ==> ${ANDROID_VERSION_MAJOR}"
exit 1
fi
if [ ${ROOT_DEVICE_TYPE} == "nand" ]; then
kernel_config=$(apply_kernel_nand_config)
echo "nand kernel config: ${kernel_config}"
fi
#make distclean
#cp arch/arm/configs/${kernel_config} .config
#cp arch/arm/configs/iTOP6818_android_defconfig .config
#这句我也看不懂,感觉像是根据oldconfig配置内核,后面也贴出来了,看懂的朋友回复下,呵呵。
yes "" | make ARCH=arm oldconfig
make ARCH=arm uImage -j8
#make ARCH=arm modules
if [ ${ROOT_DEVICE_TYPE} == "nand" ]; then
rm -f ${TOP}/arch/arm/configs/${kernel_config}
fi
check_result "build-kernel"
echo "---------- End of build kernel"
fi
}
#主要是:
1. yes "" | make ARCH=arm oldconfig
2. make ARCH=arm uImage -j8
yes “” | make ARCH=arm oldconfig 这句我也看不懂
- 看的懂的人帮忙回复一下。这句话在build_kernel函数里面。