makefile
重复键入上一节的gcc命令很是麻烦,尤其是当您要不断修改的代码,且使用了好几个函数库的时候。make工具解决了这个问题。您可以用下面的makefile代替前面的一串编译命令行:
main:main.o util.o
gcc -o main main.o util.o
main.main.c util.h
gcc -c -g main.c
util.util.c util.h
gcc -c -g util.c
请将以上内容录入并保存,文件名为makefile,然后在命令行键入make创建可执行程序。注意,所有以gcc开始的行前面必须是一个制表符。(即tab键。不能用八个空格代替制表符。所有其他行必须左对齐)。
makefile包含两种类型的行。左对齐的是依赖行。以制表符开始的是执行行,它们可以是任何有效的UNIX命令。依赖行表示某个文件依赖于其他一些文件。例如,main.main.c util.h就表示main.o文件依赖于main.c和util.h这两个文件。如果它们之中的任何一个发生变化,下面的执行行就会执行,重新生成main.o文件。
注意整个makefile产生的最终可执行文件是第一行的main。makefile的最终结果总是位于第一行。本例中的这一行表明main依赖于main.o和util.o。如果这两个文件之中任何一个发生变化,就执行命令gcc -o main main.o util.o重新生成main。
可以在一个依赖行后接多个执行行,它们必须都以制表符开始。一个大型程序可由数个函数库和一个主函数构成。程序某处发生改变时make工具会自动重新编译所有需要更新的文件。
如果您不是在UNIX机器上工作,那么您的编译器几乎肯定具有和make工具同样的功能。请阅读编译器的相关文档学习使用。
现在您明白,为什么原来的程序中总要包含stdio.h了。它只不过是一个为方便程序员使用早就做好的标准库罢了。