虽然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.ogcc -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 调试。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)