20240717 makefile 构建规则
明昧 Lv7

第一篇文章

原文链接:https://blog.csdn.net/super828/article/details/127839649

上一篇文章我们成功编译了一个单文件,对于文件数量比较少的工程,这种方法还可以,但是如果文件非常对,到几百几千个文件,那这种通过终端使用GCC的方法显然不靠谱。

这就引出了一个方法,利用一个编辑好的文件,可以按照提前规定的路径及方式编译源码文件,每次编译只要执行这个文件就可以了。然后工程师就实现了这个想法,这个文件就是本文要说的Makefile。

当然大家要是习惯IDE编程,可能也都没太注意这个文件,但是事实上IDE也是有这么个文件,只不过已经被封装在图形界面之后了。但是既然我们之后要使用Linux编程,自然有需求去学习下Makefile的。

正文:

这里以多个C文件为例子:main.c delay.c rtc.c

下面整个过程注意观察makefile解决了什么问题

Makefile由来

1.第一步先对其进行编译:这步的意思是对三个C文件进行编译,生成的可执行文件名字为main。

gcc main.c delay.c rtc.c -o main

2.需要验证这个执行文件的话。

./main

3.上述这个方法有一个很明显的问题,现在文件比较少,每次修改编译时间成本不明显,但是如果文件非常多的情况下,这种每次都一起编译的方式就会非常慢。

所以我们想要的行为当然是,每次修改那个文件,就编译这个文件。

下边的命令是先把文件编译为.o文件,-c 参数是只编译不链接。

然后通过-o 参数把编译文件链接为可执行文件。

gcc -c main.c

gcc -c delay.c

gcc -c rtc.c

gcc main.o delay.o rtc.o -o main

之后比如delay.c文件被修改,只需要单独编译delay.c即可。

gcc -c delay.c

gcc main.o delay.o rtc.o -o main

4.然后这又引出一个问题,文件比较多的情况,我们根本不可能记得哪些文件修改过;

因此我们需要一个工具;

1、如果工程没有编译过,那么工程中的所有.c 文件都要被编译并且链接成可执行程序。

2、如果工程中只有个别 C 文件被修改了,那么只编译这些被修改的 C 文件即可。

3、如果工程的头文件被修改了,那么我们需要编译所有引用这个头文件的 C 文件,并且链接成可执行文件。

然后这个工具就是Makefile,这也是Makefile的一个简单地发展过程。

makefiel 20241120了解

https://seisman.github.io/how-to-write-makefile/overview.html

F:\companyall\s57\product\ecdis-3.0\configure

 Comments
Comment plugin failed to load
Loading comment plugin
Powered by Hexo & Theme Keep
Unique Visitor Page View