gcc编译器常识
来源:互联网 发布:人工智能所用到的语言? 编辑:程序博客网 时间:2024/05/18 22:14
在Linux操作系统中,编写C/C++的代码时经常需要使用gcc这款强大的编译器。
gcc是GNU C Compiler的意思,经过多年的发展,从一开始只支持C语言的编译到了今天可以支持数种编程语言的编译,包括C++、Java、Objective-C、Pascal语言等等,其功能已经从GNU C Compiler 变成了 GNU Compiler Collection。
以下通过一幅图来了解一下gcc的工作流程和常用参数。
(说明:.c文件是指以.c为后缀的文件)
gcc编译器编译C语言程序时,有.c文件到可执行文件一共经历4个步骤,包括:预处理、编译、汇编和链接。
1、预处理(preprocessing)
预处理阶段把.c源文件处理输出为.i文件,其效果是:把.c文件中的一些头文件展开等。
-E参数可以使gcc编译器在编译程序的时候在预处理过后停止,并输出所对应的.i文件,如上图所指。
2、编译(complication)
编译阶段后输出.s文件,.s文件里包含的是汇编指令。
-s参数可以使gcc编译器在编译程序的时候在编译处理后停止,并输出对应的.s文件。
3、汇编(assembly)
汇编阶段后输出.o目标文件。
-c参数可以使编译过程在输出.o目标文件后停止,并不进行链接。
4、链接(linking)
链接阶段把多个目标文件以及库文件链接起来,并生成最后可运行的执行文件。
在使用gcc编译器的过程中,除了以上常用的参数后,还有一个-o参数也是比较常用的。
-o参数的作用是指定输出文件,该参数不在乎所输出的文件是何种类型,无论是可执行文件、汇编文件、目标文件还是预处理后的C代码文件,但是只能有一个输出文件。所以,如果是多个源文件同时编译则不适用,但如果只需输出一个可执行文件就可以使用。
如 gcc -o test.c abctest,把test.c经过以上四个步骤后生成一个名为abctest的可执行文件;
如 gcc -c test.c -o abctest.o,把test.c经过前三个步骤生成一个名为abctest.o的目标文件。
gcc编译时还经常会加上-Wall 这个参数:
-Wall:输出gcc在编译过程中所遇到的所有warning,默认情况下是不输出的。
参考资料:http://www.shanghai.ws/gnu/gcc_1.htm
- GCC编译器常识
- GCC编译器的常识
- GCC编译器的常识
- Gcc 编译器的常识
- gcc编译器常识
- GCC编译器常识(转)
- GCC编译器的常识
- 转帖:GCC编译器的常识
- 编译器常识
- gcc编译器
- gcc编译器
- Gcc编译器
- 编译器GCC
- gcc编译器
- gcc编译器
- GCC编译器
- gcc编译器
- GCC编译器
- Genymotion安装配置
- oracle优化:避免全表扫描
- 使用EditText在不同场景下调用软键盘的总结
- 【动态规划DP,二维动归】poj1080,Human Gene Functions
- Appium for windows 环境安装搭建部署和第一个实例demo
- gcc编译器常识
- 第二部分 应用篇 第七章 MongoDB MapReduce
- AngularJS学习(九) $resource服务 前后台交互ajax
- 启动rabbitmq报错:/usr/lib/rabbitmq/bin/rabbitmq-server: line 80: /var/lib/rabbitmq/mnesia/rabbit@node2.p
- iPhone编程的一些小技巧
- android笔记
- 树结构(一) - 二叉树查找树的原理与实现
- 数据结构(C实现)------- 图的邻接矩阵表示
- python 学习笔记之 全局变量和局部变量