
第一篇文章
原文链接: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