Linux Kernel Makefile入口点问题
来源:互联网 发布:阿里数据技术及产品部 编辑:程序博客网 时间:2024/05/21 11:17
默认的Makefile的入口点是第一条规则。而Linux内核的Makefile的第一条规则是这样的:
除去上面一长串赋值语句,来到:
PHONY := _all
_all:
是一条空规则。奇怪的是,下面不远处有如下规则:
ifeq ($(KBUILD_EXTMOD),)
_all: all
else
_all: modules
endif
也就是说目标all被写了两遍。
原因如下:一般Makefile是不允许一个目标被重复写两遍的,如:
a:
echo a1
a:
echo a2
这种情况会生成一条警告,说一条规则将被忽略。但如果第一条规则是一条空规则则是可以的,如:
a:
a:
echo a2
而且还有如下用法:
b:
echo b
a:
echo a
此Makefile如果直接make将会执行echo b,因为这是第一条规则,会被当成默认规则。但如果写成下面的样子:
a:
b:
echo b
a:
echo a
由于第一条空规则的存在,echo a会被当成默认规则执行。因此Linux内核中的Makefile的all可以做如下解释:
真正的入口点是:
# If building an external module we do not care about the all: rule
# but instead _all depend on modules
ifeq ($(KBUILD_EXTMOD),)
_all: all
else
_all: modules
endif
这不必保证这几行代码是第一条规则,之前还可以插入任何内容,只需要保证空规则
PHONY := _all
_all:
是整个文件的第一条规则,正真入口点处的规则便会被当成默认规则被执行。 文章出处:DIY部落
- Linux Kernel Makefile入口点问题
- android makefile入口点的问题
- Linux kernel makefile 文档
- The Linux Kernel Makefile
- Linux Kernel Makefile
- Linux kernel Makefile
- linux kernel makefile analysis
- Linux Kernel Makefile默认目标
- linux kernel makefile整体分析
- Linux Kernel Makefile之一概况
- makefile注意点问题
- rootkit for linux 2.寻找入口点
- Linux 下 C 程序的入口点
- Linux kernel的Makefile和Kconfig
- Linux kernel的Makefile和Kconfig
- Linux kernel config and makefile system
- Linux kernel config and makefile system
- linux kernel makefile的一些背景知识
- HtmlParser初步研究(转帖加其他参考理解)
- 高性能WEB开发(6) - web性能测试工具推荐
- 视频去交错:基于模糊控制的运动自适应算法(GPU实现)
- Linux内核Makefile编译生成内核目标文件的过程
- jqgrid中文属性方法大全
- Linux Kernel Makefile入口点问题
- Ubuntu中如下几个文件可以设置环境变量
- 汇编语言
- Tomcat部署Grails war包时所遇到的郁闷问题
- 使用NBU命令恢复CATALOG冷备份
- 研究apidemo的收获
- 学习ARM嵌入式应准备什么?
- NBU-查看磁带里备份的内容
- 网络笔记3