9.makefile的学习

    make工程管理器也就是一个“自动编译管理器”,在这里的“自动”是指它能够根据文件的时间戳自动发现更新过的文件从而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作

  1.Makefile的基本结构

   target:dependcy_files

              commend

  解释:target:需要由make工具创建的目标体,可以是目标文件或者是可执行文件

           dependcy_files:目标体(target)

           commend:创建目标体时所要运行的命令(每行命令必须以Tab键开头,否则报错!!!

   2.1常规编写方法

   编写显示函数display.c,如下:

 #include <stdio.h> void display(const char *str) { printf("The str is %s",str); }

编写display_num1()函数

 #include<stdio.h> void display(const char *str); void display_num1() { display("The number is 1!\n"); }

编写display_num2()函数

 #include<stdio.h> void display(const char *str) ; void display_num2() { display("The number is 2!\n"); }

编写main()函数

 #include <stdio.h> void display(const char *str); void display_num1(); void display_num2(); int main() { display("Hello Linux\n"); display_num1(); display_num2(); return 0; } 
2.2利用命令实现结果输出

 输入命令:
gcc -c main.c display.c display_num1.c display_num2.c

输入命令

gcc -o example main.o display.o display_num1.o display_num2.o

输入命令:

./example

结果如下;



2.3利用makefile实现

  再上面的介绍中实现了结果的输出,但是当修改程序时,就还须重新输入以上的三个命令,这就显得操作比较冗余,用makefile来实现就不存在这个问题。

  用vim编写Makefile(直接在终端输入:vim Makefile)

main:main.o display.o display_num1.o display_num2.o
        gcc -o example main.o display.o display_num1.o display_num2.o
.PHONY : clean
clean:
        rm main.o display.o display_num1.o display_num2.o

如图:


每次更新完函数之后,直接执行make命令即可完成更新。


执行make clean可以把目标文件(.o)移除,节省空间,执行./example即可得到运行结果,如上图所示。

2.3.makefile的简写

仔细看上述的makefile,可以看到(.o)文件要重复写三次,给编写带来很多不便,也容易出错,这时可以引用变量的模式,如下

OBJ=main.o display.o display_num1.o display_num2.o
cc= gcc -o
main:$(OBJ)
        $(cc) example $(OBJ)
.PHONY : clean
clean:
        rm $(OBJ)

如果增加了(.c)文件只需在OBJ里增加即可。


运行结果与上述是一致的。
















全部评论

相关推荐

有没有经济学家能告诉我,三年后中国的就业市场会不会好转?我在校招中拿到了一份9k+的offer,还是行业的龙头企业,心里其实不想再考研了。但又总是担心,万一读研后薪资更高,我会不会后悔呢?
Fyhyuky:三年后肯定不会啊,只会比现在更烂,你自己看看现在有没有什么增长点,电车都是国家补贴兜底才发展出来的,已经比较违背市场自然规律了,互联网更不用说了,国家强力打压,传统制造业转型失败,现在苟延残喘中
点赞 评论 收藏
分享
10-15 16:27
门头沟学院 C++
LeoMoon:建议问一下是不是你给他付钱😅😅
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务