关于Makefile查找目标文件和make -f执行make的问题
来源:互联网 发布:webstorm 结对编程 编辑:程序博客网 时间:2024/06/06 10:45
1.Makefile关于查找目标文件得的问题
在uImage中大量涉及到,目标的某一个依赖的标号在当前Makefile下找不到得情况。在之前的实验一直认为,在a文件下的Makefile需要子目录b下的b.o却没有关于b.o的标号定义的时候,make会自动在子目录b下的Makefile查找b.o的目标。下面验证是否正确。
1.1文件结构
主目录有a.c和Makefile以及子目录b
子目录下有b.c以及Makefile。
1.2代码
(1)a.c
voidmain(){}
(2)b.c
voidbbb(){}
(3)主目录的Makefile
all:bin
bin:a.o b/b.o
ld-o bin a.o b/b.o
a.o:a.c
gcc-c -o a.o a.c
clean:
rma.o bin
(4)b目录下的Makefile
all:
gcc-c -o b.o b.c
clean:
rm b.o
1.3执行结果
1.4结论
make在当前Makefile中未发现目标,会到相应的目录的Makefile继续查找规则。Ps:懒得搜资料,还是实验最实在。
2.make-f与之前得make的关系
内核中大量使用了make-f ,尤其是对于makefie-f scripts/Makefile.build,这里弄清出第一步make与这个make的关系。设计如下实验。
2.1文件结构
主目录是x,有一个Makefile,另外包含一个子目录y,且y子目录也有一个Makefile。
2.2代码
(1)主目录Makefile
var1 :=100
exportvar1 from_x
.PHONY:all x abc
all:x abc
abc:
make-f ./y/Makefile
x:
@echoxxxx
from_x:
@echofrom_x
(2)子目录y下的Makefile
.PHONY:all
all:from_x
@echo$(var1)
2.3执行结果
(1)直接执行
所以,可以知道from_x是标号无法导出。
(2)把子目录下all后面的from_x去掉,再执行,如下:
可以知道export可以导出全局变量并在其他Makefile中生效。
(3)如果再把主目录Makefile中export那行话去掉,再执行,如下:
这里看到var1变量因为没有导出,就不生效了。所以可以确定的是make-f b/Makefile作为make引发的操作,不会与主make程序共享数据,当然export除外。
2.4结论
结论是make -f与引发其得make没有实际关系,不共享变量。不过,当然make可以给其子make程序传递变量参数。
- 关于Makefile查找目标文件和make -f执行make的问题
- make和Makefile文件
- make和Makefile文件
- 关于uboot的makefile 和 make zImage
- make命令和makefile文件
- make命令和makefile文件
- make命令和makefile文件
- make命令和makefile文件
- make 的 makefile 文件编写
- make(makefile)执行流程
- make和Makefile的使用
- Linux的Makefile和Make
- [ make ] Makefile: 多个all目标的处理 和 变量目标的处理
- makefile学习总结-----make的递归执行
- make工具 —— make命令和makefile文件
- linux下make命令和makefile文件的编写
- 【Linux】make的工作原理和makefile文件
- 深入理解make命令和makefile文件
- Java编程思想_笔记(三)
- TeX中的引号(TeX Quote, UVa 272)
- svn的branch truck tag
- 搭建属于你的网站 记录下搭建个人网站探索之旅
- Linux学习--命令(1)
- 关于Makefile查找目标文件和make -f执行make的问题
- Lua之pcall和xpcall之学习
- 单片机的中断系统
- Zencart 1.5.X – login does not work – session / cookie problem – explained
- 33 Search in Rotated Sorted Array
- 进程内存信息 /proc/[pid]/maps /proc/[pid]/smaps /proc/[pid]/status
- beego入门教程
- 学习笔记 --- DM9000网卡原理与基地址设置
- 按钮内部文字(titleLabel)和图片(imageView)的位置排布方式