mk脚本分析
源码及注释如下:
#!/bin/sh
#
# Description : Build Android Script.
# Authors : jianjun jiang - jerryjianjun@gmail.com
# Version : 0.01
# Notes : None
#
export ANDROID_JAVA_HOME=/usr/lib/jvm/java-6-sun/ #java编译环境声明,如果按照前面的步骤手动安装了jdk1.6并声明了环境变量,则该句可省略
SOURCE_DIR=$(cd `dirname $0` ; pwd) #通过脚本指令查找当前目录,事实上使用./mk执行脚本,会有警告提示,直接用SOURCE_DIR=$(pwd)即可
TOOLS_DIR=${SOURCE_DIR}/tools/ #tools目录
RELEASE_DIR=${SOURCE_DIR}/out/release/ #最终生成的映像文件的释放目录
TARGET_DIR=${SOURCE_DIR}/out/target/product/smdkv210/ #映像文件的目标目录
BOOTLOADER_UBOOT_CONFIG=smdkv210single_config #uboot配置脚本
BOOTLOADER_XBOOT_CONFIG=arm-mpad #xboot配置脚本
ANDROID_KERNEL_CONFIG=s5pv210_android_defconfig #android内核配置脚本
INITRD_KERNEL_CONFIG=s5pv210_initrd_defconfig #linux内核配置脚本
FILESYSTEM_CONFIG=PRODUCT-full_smdkv210-eng #指定目标工程名称
setup_environment() #设置环境变量函数,在android源码目录创建映像释放目录和映像的目标目录
{
cd ${SOURCE_DIR};
mkdir -p ${RELEASE_DIR} || return 1;
mkdir -p ${TARGET_DIR} || return 1;
}
build_bootloader_uboot() #编译uboot,我们使用xboot,不使用uboot
{
cd ${SOURCE_DIR}/uboot || return 1
make distclean || return 1;
make ${BOOTLOADER_UBOOT_CONFIG} || return 1;
make
./mkmovi
./mkheader bootstrap.bin
./mkheader u-boot.bin
cp -v ${SOURCE_DIR}/uboot/bootstrap.bin ${RELEASE_DIR}
cp -v ${SOURCE_DIR}/uboot/u-boot.bin ${RELEASE_DIR}
echo "" >&2
echo "^_^ uboot path: ${RELEASE_DIR}/bootstrap.bin" >&2
echo "^_^ uboot path: ${RELEASE_DIR}/u-boot.bin" >&2
return 0
}
build_bootloader_xboot() #编译xboot
{
if [ ! -f ${RELEASE_DIR}/zImage-initrd ]; then #xboot将linux内核打包了,故必须存在linux内核文件
echo "not found kernel zImage-initrd, please build kernel first" >&2
return 1
fi
if [ ! -f ${RELEASE_DIR}/zImage-android ]; then
源码及注释如下:
#!/bin/sh
#
# Description : Build Android Script.
# Authors : jianjun jiang - jerryjianjun@gmail.com
# Version : 0.01
# Notes : None
#
export ANDROID_JAVA_HOME=/usr/lib/jvm/java-6-sun/ #java编译环境声明,如果按照前面的步骤手动安装了jdk1.6并声明了环境变量,则该句可省略
SOURCE_DIR=$(cd `dirname $0` ; pwd) #通过脚本指令查找当前目录,事实上使用./mk执行脚本,会有警告提示,直接用SOURCE_DIR=$(pwd)即可
TOOLS_DIR=${SOURCE_DIR}/tools/ #tools目录
RELEASE_DIR=${SOURCE_DIR}/out/release/ #最终生成的映像文件的释放目录
TARGET_DIR=${SOURCE_DIR}/out/target/product/smdkv210/ #映像文件的目标目录
BOOTLOADER_UBOOT_CONFIG=smdkv210single_config #uboot配置脚本
BOOTLOADER_XBOOT_CONFIG=arm-mpad #xboot配置脚本
ANDROID_KERNEL_CONFIG=s5pv210_android_defconfig #android内核配置脚本
INITRD_KERNEL_CONFIG=s5pv210_initrd_defconfig #linux内核配置脚本
FILESYSTEM_CONFIG=PRODUCT-full_smdkv210-eng #指定目标工程名称
setup_environment() #设置环境变量函数,在android源码目录创建映像释放目录和映像的目标目录
{
cd ${SOURCE_DIR};
mkdir -p ${RELEASE_DIR} || return 1;
mkdir -p ${TARGET_DIR} || return 1;
}
build_bootloader_uboot() #编译uboot,我们使用xboot,不使用uboot
{
cd ${SOURCE_DIR}/uboot || return 1
make distclean || return 1;
make ${BOOTLOADER_UBOOT_CONFIG} || return 1;
make
./mkmovi
./mkheader bootstrap.bin
./mkheader u-boot.bin
cp -v ${SOURCE_DIR}/uboot/bootstrap.bin ${RELEASE_DIR}
cp -v ${SOURCE_DIR}/uboot/u-boot.bin ${RELEASE_DIR}
echo "" >&2
echo "^_^ uboot path: ${RELEASE_DIR}/bootstrap.bin" >&2
echo "^_^ uboot path: ${RELEASE_DIR}/u-boot.bin" >&2
return 0
}
build_bootloader_xboot() #编译xboot
{
if [ ! -f ${RELEASE_DIR}/zImage-initrd ]; then #xboot将linux内核打包了,故必须存在linux内核文件
echo "not found kernel zImage-initrd, please build kernel first" >&2
return 1
fi
if [ ! -f ${RELEASE_DIR}/zImage-android ]; then