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代码:
总编译过程命令:gcc hello.c -o hello此过程生成 hello.exe
实际上,上述编译过程是分为四个阶段进行的,即预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Linking)。
2.1 预处理预处理的过程主要处理包括以下过程:将所有的#define删除,并且展开所有的宏定义
处理所有的条件预编译指令,比如#if #ifdef #elif #else #endif等
处理#include 预编译指令,将被包含的文件插入到该预编译指令的位置。
删除所有注释 “//”和”/* */”.
添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号。
保留所有的#pragma编译器指令,因为编译器需要使用它们
2.2 编译编译过程就是把预处理完的文件进行一系列的词法分析,语法分析,语义分析及优化后生成相应的汇编代码。
2.3 汇编汇编器负责将生成的汇编代码转换为对应的机器码
2.4 连接连接器将所有程序运行所需的所有目标文件,以及所依赖的其他库文件连接起来,生成可执行文件。本程序是将其与c语言标准输入输出库进行连接,生成可自行文件。
3 多个程序文件的编译通常整个程序是由多个源文件组成的,相应地也就形成了多个编译单元,使用GCC能够很好地管理这些编译单元。假设有一个由test1.c和 test2.c两个源文件组成的程序,为了对它们进行编译,并最终生成可执行程序test,可以使用下面这条命令:
/article/4630399.html Linux GCC常用命令http://smilejay.com/2012/01/c_compilation_stages/ C程序编译过程浅析
来自为知笔记(Wiz)
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.chello.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)
相关文章推荐
- C++学习笔记--GCC编译过程
- 一.【C++】gcc的编译过程
- C/C++学习 - gcc编译过程查看汇编代码
- C/C++编译过程(gcc)
- C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
- pcre编译出错gcc-c++未安装
- C C++ Java C# JS编译、执行过程的原理入门分析
- 在Ubuntu中编译、安装 gcc4.1.1 过程以及遇到的问题
- gcc 编译过程和编译优化
- GCC编译过程
- Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解
- gcc 编译c++常见错误汇总
- linux下使用gcc编译运行C/C++程序
- C++学习(一)——安装gcc编译环境
- visual studio 2012 C/C++程序的创建、编辑、编译和运行过程
- C/C++的编译过程中到底发生了什么?
- gcc编译C和C++程序
- C & C++的编译过程详解
- Linux之GCC命令 -- 解析GCC编译的四个过程
- gcc 编译处理过程