//参考资料:bilibili-----正月点灯笼
前几天一直在看《30天自制操作系统》这本书,但因为需要购买许多诸如软盘这样的东西,所以不得不放弃。这里面多次提到了makefile
所以出于个人兴趣,简单了解了一下下
makefile 是linux的编译脚本
最初目的:编译.c文件或者说编译多个.c文件gcc 命令会打特别特别长---------makefile
1.touch makefile(不加任何扩展名)
2.用 vim 打开
3.makefile格式:
target,目标
dependencies,文件依赖,目标依赖那些文件
(空出1个TAB键)command 编译代码
ubuntu 14.4是两个tab键
4.保存
5.直接输入make
(Excepted:刚才的命令行)
//断片一周:::::::
可以把函数写在头文件里,但要同一目录下且为.h文件
表示把main.c和tool.c合并成一个文件进行编译(合并成main可执行文件)
然后./main
main.c 依赖于以上三个.c文件,然后再编译为.o文件
若bar.c发生改动,其他两个不影响.
通过.h文件链接
tool.h 文件就是声明函数
tool.c文件就是实现函数功能(比如:二分查找)
main.c 通过tool.h链接到tool.c就是调用函数
一个makefile只可以写一个.c文件的编译,如果写多个,它会只读第一个
so 得把第一行去掉
再编译
可以看到make 是倒着读的
可以看到.o文件和main没有了被删除了
以上的编译器都是用的gcc来编译的,那假如不用gcc编译改的时候就要一个一个的改
所以可以在上面定义类似于define
多个有main函数的文件
可以发现只执行了上上图的main_max这一条
这是因为makefile在执行的时候只根据第一条来,由于第一条已经能够生成一个main_max可执行文件了,所以忽略了下一条,而后面能够执行的原因是因为main_max里面包含着依赖
摆脱只执行第一条:加all:xxx xxx