gcc编译过程简述】的更多相关文章

在linux系统上,从源文件到目标文件的转化是由编译器完成的.以hello.c程序的编译为例,如下: dfcao@linux: gcc -o hello hello.c 在这里,gcc编译器读取源文件hello.c,并把它翻译成一个可执行文件 hello. 这个翻译过程可分为四个阶段逐步完成:预处理,编译,汇编,链接,如下图所示. 逐步做下简单分析: 在未编译前,hello.c 的源代码如下 #include <stdio.h> int main() { printf("hello,…
(一)GCC编译过程 预处理 cpp -o a.i a.c     //生成预处理文件 等同于[gcc -E] //预处理为将宏定义(#define)等进行替换. 编译 /user/lib/gcc/i486-linux-gnu/4.4.3/cc1 -o a.s  a.i //红色为目标文件, 蓝色为编译文件 等同于[gcc -S] 汇编 as -o a.o  a.s  //将a.s汇编保存为a.o文件 等同于[gcc -c] 链接 /usr/lib/gcc/i486-linux-gnu/4.4.…
1. 库的介绍 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.库有两种:静态库(.a..lib)和动态库(.so..dll). windows上对应的是.lib .dll linux上对应的是.a .so 在这里先介绍下Linux下的gcc编译的几个选项 g++ -c hellospeak.cpp 会将hellospeak.cpp 选…
一. GCC编译过程 gcc -E hello.c -o hello.i // 预处理.将代码中包含的头文件和宏进行替换 gcc -S hello.i -o hello.s // 汇编.将当前文本转换为汇编代码 gcc -c hello.s -o hello.o   // 编译.将当前汇编代码转换成二进制代码 gcc hello.o -o hello   // 链接.将生成的二进制代码与系统库函数进行链接,生成可执行文件 各阶段的代码内容如下: hello.c (原始C代码) #include…
gcc编译过程 现代编译器常见的编译过程: 源文件-->预处理-->编译/优化-->汇编-->链接-->可执行文件 对于gcc而言: 第一步 预处理       命令: gcc -o test.i -E test.c            或者 cpp -o test.i test.c (这里cpp不是值c plus plus,而是the C Preprocessor)       结果:  生成预处理后的文件test.i(可以打开后与预处理前进行比对,当然长度会吓你一跳) …
gcc 编译过程从 hello.c 到 hello(或 a.out)文件, 必须历经 hello.i. hello.s. hello.o,最后才得到 hello(或a.out)文件,分别对应着预处理.编译.汇编和链接 4 个步骤,整个过程如图 10.5 所示. 这 4 步大致的工作内容如下:(1) 预处理, C 编译器对各种预处理命令进行处理,包括头文件包含.宏定义的扩展.条件编译的选择等:(2) 编译,将预处理得到的源代码文件,进行“翻译转换”,产生出机器语言的目标程序,得到机器语言的汇编文件…
以下是C程序一般的编译过程: gcc的编译流程分为四个步骤,分别为:· 预处理(Pre-Processing) 对C语言进行预处理,生成*.i文件.· 编译(Compiling) 将上一步生成的*.i文件编译生成汇编语言文件,后缀名为*.s· 汇编(Assembling) 将汇编语言文件*.s经过汇编,生成目标文件,后缀名为*.o· 链接(Linking) 将各个模块的*.o文件链接起来,生成最终的可执行文件 示例代码: //hello.c源代码 #include<stdio.h> int m…
前言: GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言.GCC 很快地扩展,变得可处理 C++.后来又 扩展能够支持更多编程语言,如Fortran.Pascal.Objective-C.Java.Ada.Go以及各类处理器架构上的汇编语言等,所以改 名GNU编译器套件(GNU Compiler Collection).(百度百科,想了解自己查询) 一.GCC程序的编译过程大概分四个阶段 预处理(Pre-Processing) 编译(Compil…
system 库函数的功能是执行操作系统的命令或者运行指定的程序 #include <stdio.h> #include <stdlib.h>//引入库 int main() { //system("notepad");//打开记事本 system("dir");//查看目录 system("ipconfig");查看ip ; } 多线程 pthread_create thread_create POSIX标准 POSIX…
转自:http://blog.csdn.net/eastmoon502136/article/details/8162626 版权声明:本文为博主东月之神原创文章,未经博主允许不得转载. 上篇文章,知道了,C代码编译后存放在内存中的位置,那么C代码的整个编译过程又是怎样的呢?一条命令gcc hello.c就可以编译成可执行程序a.out,然后./a.out之后就可以执行hello.c这个程序的代码了.下面的文章分析的不错,就整理了下. hello.c: #include<stdio.h> in…