我也是初学Linux,对Linux中的编译产生的一定的厌烦,正巧遇到了makefile。
本文只是讨论Makefile的简单使用,并没有进入很深层次的探讨,谢谢大家。
一、makefile的引入
我们现在已有main.c,mymath.c,mymath.h三个文件,想要此程序能正常运行就需要输入以下命令进行编译连接。
但是当文件多了之后就可能需要多个文件名,会产生极大的麻烦。
有了makefile就会变得简单许多
二、makefile的使用
当有了makefile文件之后只需要键入make命令就行会进行编译链接,生成可执行文件,操作如下
那如何编写makefile文件呢?这将是本文的重点。
在创建了名为makefile的文件后(本文为了方便展示各个版本,使用了makefile+数字的命令和特殊执行方式)编写内容
①版本一(括号内容为解释,不是makefile需要的内容)
main:main.o mymath.o(在文件名后面加冒号,表示main依赖于main.o和mymath.o)
gcc -o main main.o mymath.o(前面的空格为TAB符,且必须有TAB符,此处是执行的命令)
main.o: main.c(冒号表示依赖)
gcc -c main.c(必须要TAB符)
mymath.o:mymath.c
gcc -c mymath.c
接下来执行make命令,就可以生成可执行文件
②版本二(版本一麻烦,输入两遍.o文件,将需要需要生成的.o文件都用变量代替)
③ 版本三(.c文件会生成同名的.o文件,指令就可以省略,但此处的编译器变成了cc,在Linux下cc和gcc等价)
(为什么不省略main下面的指令,是因为-o需要制定生成的可执行文件)
④版本四 (.o文件可以自己找寻.c文件,并且可以归并到同一行)
⑤版本五(.o可以用变量替换)
⑥版本六(可以设置不同的路径,用冒号隔开)