第一步 预处理后结束 参数-E
gcc -E hello.c -o hello.i
查看hello.i文件中的内容
cat hello.i
stdio.h的内容插入到文件里去了,宏定义也在预处理中都做了相应的处理
第二步 将hello.i 编译为 目标代码 参数 -c
gcc -c hello.i -o hello.o
第三步 将生成的目标文件链接成为可执行文件
gcc hello.o -o hello
将多个源文件进行编译并最终生成可执行程序
命令:gcc foo1.c foo2.c -o foo
相当于
gcc -c foo1.c -o foo1.o
gcc -c foo2.c -o foo2.o
#gcc foo1.o foo2.o -o foo
在编译一个包含许多源文件的工程时,若只用一条GCC命令来完成编译是非常浪费时间的。
假设项目中有100个源文件需要编译,并且每个源文件中都包含 10000行代码,如果像上面那样仅用一条GCC命令来完成编译工作,那么GCC需要将每个源文件都重新编译一遍,然后再全部连接起来。
尤其是当用户只是修改了其中某一个文件的时候,完全没有必要将每个文件都重新编译一遍,因为很多已经生成的目标文件是不会改变的。
要解决这个问题,关键是要灵活运用GCC,同时还要借助像Make这样的工具。