上一页 下一页

C 编程基础

Makefile

反复输入所有 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 行前加上一个制表符。(八个空格是不够的——它必须是一个制表符。所有其他行都必须左对齐。)

广告

这个 makefile 包含两种类型的行。左对齐的行是依赖行。以制表符开头的行是可执行行,可以包含任何有效的 UNIX 命令。依赖行表示某个文件依赖于其他文件集。例如,main.o: main.c util.h 表示文件 main.o 依赖于文件 main.cutil.h。如果这两个文件中的任何一个发生更改,则应执行以下可执行行以重新创建 main.o

请注意,整个 makefile 生成的最终可执行文件是 main,位于 makefile 的第 1 行。makefile 的最终结果应始终位于第 1 行,在此 makefile 中,该行表示文件 main 依赖于 main.outil.o。如果其中任何一个发生更改,则执行 gcc -o main main.o util.o 命令以重新创建 main

可以在依赖行下方放置多行可执行命令——它们都必须以制表符开头。一个大型程序可能包含多个库和一个主程序。当有更改时,makefile 会自动重新编译所有需要重新编译的内容。

如果你不在 UNIX 机器上工作,你的编译器几乎肯定具有与 makefile 相当的功能。阅读你的编译器文档以了解如何使用它。

现在你明白为什么在之前的程序中包含了 stdio.h 了。它只是一个标准库,很久以前有人创建并提供给其他程序员,以方便他们的工作。