利用makefile实现c语言项目编译

利用makefile实现c语言项目编译,第1张

本周 *** 作系统课的实验是用c语言实现10个进程调度算法。这个项目中有多个.h头文件和.c源文件,利用makefile可以很轻松地找到所有项目文件之间的关系并实现编译。

虽然makefile的基本框架学校已经提供的,但身为c语言小白,连如何利用make指令来使用这份makefile都不知道,更别说要往这里面增加自己添加的文件。就记录下这篇笔记给自己以及需要的朋友参考。

先贴上这份makefile,注释是自己后来添加的:

在终端进入makefile所在的目录,使用make,就可以使用我们在makefile中申明的指令,如debug、run和clean。

http://www.ruanyifeng.com/blog/2015/02/make.html

https://blog.csdn.net/zhaocuit/article/details/74782789

这个提示是说你当前项目里有多个文件里都有叫main的函数,这样会导致系统不清楚从哪个main执行,建议你可以把其它文件里的main随便改下下名字比如叫main1什么的,只把你当前要运行的文件里的主函数改为main就行了。

或者建议如果只有一般的测试代码只有一个文件的那种,新建的时候就不要建项目,直接建文件就可以了。

my_run_filename: main.o set1.o set2.o set3.o

gcc -o my_run_filename main.o set1.o set2.o set3.o

main.o: main.c

gcc -c main.c

set1.o: set1.c

gcc - c set1.c

set2.o: set2.c

gcc -c set2.c

set3.o:set3.c

gcc -c set3.c

虽然我以前也使用过 make 命令对 makefile 文件进行多个源文件进行编译、链接,但是由于我已经很多年不编写 C 语言程序了,所以也不敢说我写的就完全正确。但是该 makefile的基本思路我可以给你解释一下:

my_run_filename: main.o set1.o set2.o set3.o

gcc -o my_run_filename main.o set1.o set2.o set3.o

my_run_filename 是最终生成的可执行程序名,它依赖于四个中间文件(以 *.o 为结尾):main.o set1.o set2.o set3.o

生成该最终可执行的程序名的命令是:gcc -o my_run_filename main.o set1.o set2.o set3.o

main.o: main.c

gcc -c main.c

main.o 这个中间文件依赖于 main.c 源程序,其中:gcc -c main.c 代表只编译、不链接。

gcc 的 -c 选项表示只产生 main.o 文件,等待所有模块单独编译通过了之后,再和别的一起进行链接。

其它 set1、set2、set3 同理。

虽然我知道 makefile 的大致思路,但是给我印象最深的就是:make 工具 对 makefile 文本文件的书写规则是相当苛刻的,你可能还需要花费较多的时间进行 make 调试。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11801982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存