linux源码Makefile和脚本分析

基于平台: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
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值