2018-11-19 linux makefile

//参考资料: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




你可能感兴趣的:(2018-11-19 linux makefile)