(本文为博闻网版权所有,转载必须注明出处。)

重复键入上一节的gcc命令很是麻烦,尤其是当您要不断修改的代码,且使用了好几个函数库的时候。make工具解决了这个问题。您可以用下面的makefile代替前面的一串编译命令行:

main:main.o util.o
gcc -o main main.o util.o
main.o:main.c util.h
gcc -c -g main.c
util.o:util.c util.h
gcc -c -g util.c

请将以上内容录入并保存,文件名为makefile,然后在命令行键入make创建可执行程序。注意,所有以gcc开始的行前面必须是一个制表符。(即tab键。不能用八个空格代替制表符。所有其他行必须左对齐)。

makefile包含两种类型的行。左对齐的是依赖行。以制表符开始的是执行行,它们可以是任何有效的UNIX命令。依赖行表示某个文件依赖于其他一些文件。例如,main.o: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了。它只不过是一个为方便程序员使用早就做好的标准库罢了。




 打印  电子邮件  反馈  引用
编辑推荐
软件狗是什么?
软件狗(Software Dog)是一种计算机软件的加密方式,是“硬件加密锁”的
间谍软件工作原理
您的计算机是否曾变得非常慢,即使打开Word处理器也会占用很长时间,间谍软件可能
什么是路由算法?
路由器是管理网络流量和发送数据包的,但是它是如何决定数据包发送的呢?通过本文,博
Gnutella文件共...
Napster在巅峰时期或许是有史以来最受欢迎的网站。紧随其后的文件共享体系架构
主页 |  公司信息 |  广告服务 |  招聘信息 |  隐私 |  联系我们 |  帮助 |  条款和条件