编译多个源代码文件会生成多个目标文件,每个目标文件都包含一个源文件的机器码和相关数据的符号表。除非使用
一旦所有当前源文件都被编译为目标文件,就可以使用 GCC 来链接它们:
-c
选项指示
GCC 只编译不链接,否则 GCC 会使用临时文件作为目标文件输出:
$ gcc -c main.c
$ gcc -c func.c
$ gcc -c main.c func.c
然而,实际上编译器通常每次只会被调用来完成一件小型任务。大的程序包含许多源文件,在开发期间必须被编译、测试、编辑,然后再编译,很少会有在创建中的修改行为会影响所有的源文件。为了节省时间,可以使用 make 控制创建过程,由它调用编译器重新编译,而且只编译比对应的最新源文件旧的那些目标文件。一旦所有当前源文件都被编译为目标文件,就可以使用 GCC 来链接它们:
$ gcc main.o func.o -o app.out -lm
GCC 假设扩展名为.o
的文件是要被链接的目标文件。