基于平台:slinx的全志A33开发板
开发板编译系统指令如下:
tar -xvf sinlinx-a33-linux-xxx.tar.gz
git reset –hard工具链:
tar -jxvf /root/work/sinlinx/a33/tools/toolchain/arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C /opt/
export PATH=$PATH:/opt/arm-2014.05/bin编译指令:
cd lichee
./build.sh config
./build.sh
./build.sh pack
首先我们需要先配置内核,装载哪些东西不装载哪些东西,这个配置文件就是deconfig,我平台的deconfig如下:
sinlinx-a33-linux-20160409\lichee\linux-3.4\arch\arm\configs\sun8iw5p1smp_defconfig
这个defconfig最后会编译进根目录下的.config
make menuconfig 会根据上面 defconfig 的基础上生成一个配置页面,实际上也是去读取 .config 的内容,我们可以在上面修改配置项
我的平台并不是直接的进行 make sun8iw5p1smp_defconfig,而是通过一系列的脚本间接的进行 make,这样做的目的是为了兼容其它不同的平台
先是执行了脚本+config选项,所以这里分析下 ./build.sh config
build.sh 打开并运行 mkcommon.sh 这个脚本:
buildroot/scripts/mkcommon.sh $@
mkcommon.sh 根据 config 选项运行 mksetup.sh :
if [ "x$1" = "xconfig" ] ; then
. ${BR_SCRIPTS_DIR}/mksetup.sh
mksetup.sh 执行 mkcmd.sh 脚本然后执行 mksetup 函数:
. buildroot/scripts/mkcmd.sh
mksetup
mkcmd.sh 定义了一些变量,主要是定义内核目录、工具目录、输出目录等,然后定义了一些功能函数:
# define importance variable
LICHEE_TOP_DIR=`pwd`
LICHEE_BR_DIR=${LICHEE_TOP_DIR}/buildroot
LICHEE_KERN_DIR=${LICHEE_TOP_DIR}/linux-3.4
LICHEE_TOOLS_DIR=${LICHEE_TOP_DIR}/tools
LICHEE_OUT_DIR=${LICHEE_TOP_DIR}/out
function init_defconf(){
}
function init_chips(){
}
function select_board(){
}
.....
接着回到 mksetup.sh 这个脚本继续执行 mksetup 函数:
function mksetup