GCC编译过程
2014-02-27 21:08
225 查看
第一步 预处理后结束 参数-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这样的工具。
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这样的工具。
相关文章推荐
- Android系统开发(1)——GCC编译器的编译和安装过程
- x264gcc编译全过程
- gcc 的执行过程详解 预处理 编译 汇编 链接
- gcc编译过程
- 重学c语言系列一(gcc编译过程)
- 嵌入式gcc的编译过程
- gcc编译C的过程
- 【i.MX283A学习】gcc编译C语言过程
- GCC编译过程
- GCC之C 语言编译过程
- GCC编译过程分解
- 和菜鸟一起学c之gcc编译过程及其常用编译选项
- C编译过程以及gcc编译参数
- Ubuntu12.04嵌入式交叉编译环境arm-linu-gcc搭建过程,图解
- Linux操作 gcc编译过程 制作静态库、动态库
- gcc 编译.c文件的编译过程
- Android系统开发(1)——GCC编译器的编译和安装过程
- GCC编译过程
- GCC编译hello.c的详细过程
- 结合"hello world"探讨gcc编译程序的过程