gcc 编译过程

gcc 编译过程
从 hello.c 到 hello(或 a.out)文件, 必须历经 hello.i、 hello.s、 hello.o,最后才得到 hello(或
a.out)文件,分别对应着预处理、编译、汇编和链接 4 个步骤,整个过程如图 10.5 所示。

这 4 步大致的工作内容如下:
(1) 预处理, C 编译器对各种预处理命令进行处理,包括头文件包含、宏定义的扩
展、条件编译的选择等;
(2) 编译,将预处理得到的源代码文件,进行“翻译转换”,产生出机器语言的目标
程序,得到机器语言的汇编文件;
(3) 汇编,将汇编代码翻译成了机器码,但是还不可以运行;
(4) 链接,处理可重定位文件,把各种符号引用和符号定义转换成为可执行文件中
的合适信息,通常是虚拟地址。

时间: 2024-10-08 19:28:25

gcc 编译过程的相关文章

C/C++学习 - gcc编译过程查看汇编代码

GCC GCC参数 举例 GCC gcc大家都很熟悉,是个编译器,功能强大,全称是:GUN GCC. 平时大家都简单的称为:GCC, 功能强大,能够编译很多的语言.包括:c, c++, java, ada等- GCC参数 gcc平时有很多参数,在平时我编译小程序的时候,都直接gcc -o object source.c就可以了. 但是有一次我想查看我同样目的但是不同写法的两个代码是执行效率上是否有差别.所以我就查了下gcc编译过程中的汇编代码的参数. 参数 说明 -c 只编译不链接,生成*.o文

GCC编译过程与动态链接库和静态链接库

1. 库的介绍 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.库有两种:静态库(.a..lib)和动态库(.so..dll). windows上对应的是.lib .dll linux上对应的是.a .so 在这里先介绍下Linux下的gcc编译的几个选项 g++ -c hellospeak.cpp 会将hellospeak.cpp 选

gcc编译过程简述

在linux系统上,从源文件到目标文件的转化是由编译器完成的.以hello.c程序的编译为例,如下: [email protected]: gcc -o hello hello.c 在这里,gcc编译器读取源文件hello.c,并把它翻译成一个可执行文件 hello. 这个翻译过程可分为四个阶段逐步完成:预处理,编译,汇编,链接,如下图所示. 逐步做下简单分析: 在未编译前,hello.c 的源代码如下 #include <stdio.h> int main() { printf("

GCC编译过程

以下是C程序一般的编译过程: gcc的编译流程分为四个步骤,分别为:· 预处理(Pre-Processing) 对C语言进行预处理,生成*.i文件.· 编译(Compiling) 将上一步生成的*.i文件编译生成汇编语言文件,后缀名为*.s· 汇编(Assembling) 将汇编语言文件*.s经过汇编,生成目标文件,后缀名为*.o· 链接(Linking) 将各个模块的*.o文件链接起来,生成最终的可执行文件 示例代码: 1 //hello.c源代码 2 3 #include<stdio.h>

gcc 编译过程及有关命令详解

用gcc编译.c文件流程 1 预处理阶段,输入c的源文件,编译器分析处理源代码文件中的各种宏指令,如"#ifdef,#endif,#include"等,进行去注释,头文件展开,宏替换等操作 .用户可以用 -E 参数让GCC在预处理结束后停止编译过程(gcc -E [source file(.c)] -o [output file(.i)]. 2 编译阶段,从高级语言转换为汇编语言,GCC在预处理后要检查代码规范,是否有语法错误.无误后翻译为汇编语言. GCC 的 -S 选项让GCC在进

Linux系统GCC常用命令和GCC编译过程描述

前言: GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言.GCC 很快地扩展,变得可处理 C++.后来又 扩展能够支持更多编程语言,如Fortran.Pascal.Objective-C.Java.Ada.Go以及各类处理器架构上的汇编语言等,所以改 名GNU编译器套件(GNU Compiler Collection).(百度百科,想了解自己查询) 一.GCC程序的编译过程大概分四个阶段 预处理(Pre-Processing) 编译(Compil

GCC 编译过程和链接库

GCC 加工程序的过程 在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序. 一.GCC使用 Gcc指令的一般格式为:Gcc [选项] 要编译的文件 [选项] [目标文件] 其中,目标文件可缺省,Gcc默认生成可执行的文件名为:a.out 我们来看一下经典入门程序"Hello World!" # vi  main.c #include <stdio.h> void main () { printf("hello world!\n&q

system 系统调用、gcc编译过程

system 库函数的功能是执行操作系统的命令或者运行指定的程序 #include <stdio.h> #include <stdlib.h>//引入库 int main() { //system("notepad");//打开记事本 system("dir");//查看目录 system("ipconfig");查看ip return 0; } 多线程 pthread_create thread_create POSIX

gcc编译过程、C语言编译过程分析、环境变量设置、linux文件夹结构和用途介绍、常用文件和目录的操作命令、文件类型

参考链接:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html http://blog.csdn.net/novrose/article/details/7670477 http://blog.sina.com.cn/s/blog_7d5d42b40100ulqn.html 一.大小写后缀的区别 .s     汇编语言源程序;汇编.S     汇编语言源程序;预处理,汇编 小写的s文件,在后期阶段不在进行预处理操作,所以