您的位置:首页 > 编程语言 > C语言/C++

C/C++编译过程(gcc)

2014-01-03 15:20 225 查看
1 配置gcc下载: 首先下载mingw,解压。配置环境变量: 系统变量中找到Path,在Path中添加 D:\Program Files\MinGW\bin;测试: 运行cmd,输入gcc -v就会看到其版本,否者,就配置没成功。
2 C/C++编译过程程序名 hello.c代码:
#include <stdio.h>
int main()
{
printf("hello\n");
}

总编译过程命令:gcc hello.c -o hello此过程生成 hello.exe
实际上,上述编译过程是分为四个阶段进行的,即预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Linking)。
2.1 预处理预处理的过程主要处理包括以下过程:将所有的#define删除,并且展开所有的宏定义
处理所有的条件预编译指令,比如#if #ifdef #elif #else #endif等
处理#include 预编译指令,将被包含的文件插入到该预编译指令的位置。
删除所有注释 “//”和”/* */”.
添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号。
保留所有的#pragma编译器指令,因为编译器需要使用它们
gcc -E hello.c -o hello.i 或 gcc -E hello.c
hello.i存放经预处理后的代码。
2.2 编译编译过程就是把预处理完的文件进行一系列的词法分析,语法分析,语义分析及优化后生成相应的汇编代码。
gcc -S hello.i -o hello.s

2.3 汇编汇编器负责将生成的汇编代码转换为对应的机器码
gcc -c hello.s -o hello.o

2.4 连接连接器将所有程序运行所需的所有目标文件,以及所依赖的其他库文件连接起来,生成可执行文件。本程序是将其与c语言标准输入输出库进行连接,生成可自行文件。
gcc hello.o -o hello

3 多个程序文件的编译通常整个程序是由多个源文件组成的,相应地也就形成了多个编译单元,使用GCC能够很好地管理这些编译单元。假设有一个由test1.c和 test2.c两个源文件组成的程序,为了对它们进行编译,并最终生成可执行程序test,可以使用下面这条命令:
gcc test1.c test2.c -o test
如果同时处理的文件不止一个,GCC仍然会按照预处理、编译和链接的过程依次进行。如果深究起来,上面这条命令大致相当于依次执行如下三条命令:
gcc -c test1.c -o test1.o
gcc -c test2.c -o test2.o
gcc test1.o test2.o -o test

/article/4630399.html Linux GCC常用命令http://smilejay.com/2012/01/c_compilation_stages/ C程序编译过程浅析

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: