您好,欢迎来粤嵌教育!请 登录  粤嵌技术中心 |  粤嵌教仪 | 咨询报名 | 联系我们 | 技术论坛 | 网站地图
粤嵌教育
新闻 > 操作系统 > Linux

U-BOOT Makefile 的结构

来源: 作者: 时间:2010-06-04
 

  从Makefile文件中可以对u-boot的构建过程有一个更深入的了解,然而面对数千行的Makefile文件,到底要如何入手确实是让人挺头疼的。突然有种茅塞顿开的感觉,于是乎想把关于Makefile的一点想法记录下来,以期能对那些与我同样在摸索的同道有所助益,当然,想要有更深入的了解,别无他法,还是要老老实实的阅读源文件的Makefile文件的。其实Makefile虽然行数很多,不过也没有很复杂,它的结构还是很清晰简洁的。

  首先,我们需要了解的就是U-BOOT的构建过程,一般这样来构建u-boot:先执行命令‘make <board_name>_config'进行配置,然后执行'make all'进行编译来产生目标文件。
例如:
'make smdk2410_config'
'make all'
产生用于2410板的U-BOOT的目标文件。

  在此以U-BOOT 1.3.4版的Makefile为例。这个文件总共为3062行,可真够吓人的。

开头是一段注释,是对于这个文件的版权的一些声明。为从第一行到第22行。

紧接着的是一些环境变量的定义。从第24行开始,一直到280行。

(一段Makefile中的注释,对于在源码目录外构建目标的说明)
U-BOOT的Makefile支持在源码目录之外的目录中构建二进制文件。两种方法可以做到这一点:
1)在make命令行中添加 O=
‘make O=/tmp/build all'
2)设置环境变量BUILD_DIR以指向想要构建目标文件的目录
’export BUILD_DIR=/tmp/build'
'make'
第二种方法还可以和一个MAKEALL脚本一起使用
'export BUILD_DIR=/tmp/build'
'./MAKEALL'
命令行的'O='要优先于BUILD_DIR环境变量
紧接着的是用于构建目标文件的目标,也就是all目标,从282行,一直到第461行。

  然后是unconfig目标,顾名思义,就是在执行了配置命令之后,却发现不得不更改配置,而用来撤销之前的配置的。

  紧接着的就是针对数百个开发板的配置目标,也就是在构建的第一步中传递给make的参数。Makefile中这些目标按照体系结构来排列,在体系结构内又按不同的平台来排列。首先是PowerPC的板,从468行一直到2322行,占有着整个Makefile文件一半以上的行。有针对数量众多的不同平台的不同开发板的配置目标。然后就是ARM体系结构的,从2323行一直到2678行。支持很多种平台,各平台排列依次为StrongARM、ARM92xTSystems、ARM通用开发板、S3C44B0 systems、ARM720T、XScale Systems、ARM1136Systems。然后是i386架构的,从2680行到2694行。然后是MIPS架构的,从2695行到2776.之后是Nios架构的,没有支持的板子。然后是Nios32架构的...这些配置目标一直到3001行。

  然后是一些用于清理、备份等的目标,之前的构建过程的逆过程或者用于备份构建的目标文件的目标。

  为了避免无关的信息的打扰,也减轻一下大文件所带给人的心理压力,可以把许许多多的与自己的开发板完全无关的配置目标等清除掉了,这样也可以不分散自己的注意力。最后可以清理出来一个更加简洁、只有短短数百行的这么一个文件。
  阅读的时候可以首先看配置目标,因为它是最先被执行的。
接着根据配置目标执行的结果,来阅读前面个环境变量的值,因为很多变量的值都是和配置目标密切相关的。
最后,阅读all目标。


更多相关新闻
推荐课程
· 嵌入式linux系统与应用开发就业班
· ARM+嵌入式Linux开发周末培训班
· ARM+嵌入式Linux实时网络培训班
· MTK平台手机设计
· Cortex-M3与uC/OS-II开发应用班
· Windows CE系统定制与驱动开发培训班
· Cadence PCB设计高级培训班
· 高速嵌入式硬件设计培训班
· J2ME手机游戏开发培训班
· ARM+嵌入式Linux视频培训教程
热门点击
·嵌入式系统及如何开发自己的嵌入式系统
·Linux发展面临新机遇 产业井喷在即
·Linux环境下基于I2C总线的EEPR..
·Linux系统下Shell命令行快捷键实..
·基于Linux/Qtopia的车载温度网..
·Linux系统安全如何设定log日志记录..
·基于ARM9的32位高端嵌入式微处理器和..
·LSI Tarari 内容处理器大幅降低..
·基于μClinux的触摸屏设计与关键技术分析
·linux 基础复习(2)linux基础命令
·基于嵌入式Linux与S3C2410的网..
·linux字体技术原理
·Fedora Linux系统Samba服..
·移植U-Boot到AT91RM9200开..
·华恒HHS3C6400-Integrat..
                更多..
关于我们 | 联系我们 | 我要报名 | 我要咨询 | 粤嵌招聘 | 地理位置图/乘车指引 | 友情链接 | 网站地图
在线客服:点击这里给我发消息 点击这里给我发消息  点击这里给我发消息 技术支持:点击这里给我发消息 网站合作:点击这里给我发消息
联系地址:广州市科学城光谱西路69号TCL文化产业园二期创意中心B407-408室  邮政编码:510663
客服热线:020-61038926转823/831 61038927 61038928 传真:020-61038928 24小时服务热线:15013238362 13450237194
技术支持与报障:service@gec-edu.org 020-61038927-809
Copyright © 2005-2010 粤嵌教育.All Rights Reserved.粤ICP备06060296号