gcc

mac2022-06-30  27

原创

GCC

2019-05-04 23:19:00 静水流深_ 阅读数 532 分类专栏: Linux 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/Hongwei_1990/article/details/89819690
GCC(GNU Compiler Collection,GNU编译器套件),是由GNU开发的编程语言编译器。
gcc主要软件包如下:
序号名称功能描述1cppC预处理器2gccC编译器3g++C++编译器4gccbug创建BUG报告的Shell脚本5gcov覆盖测试工具,用于分析在程序的哪个位置做优化效果最佳6libgccGCC的运行库7libstdc++标准C++库8libsupc++提供支持C++语言的函数库
C/C++程序常用文件名后缀:
序号扩展名文件内容1.a静态库,由目标文件构成的文件库2.cC源码,必须经过预处理3.C .cc .cppC++源码,必须经过预处理4.hC/C++源码的头文件5.i.c经过预处理得到的C源码6.ii.C .cc .cpp经过预处理得到的C++源码7.s汇编语言文件,是.i文件编译后得到的中间文件8.o目标文件,是编译过程得到的中间文件9.so共享对象库,也称动态库

gcc编译过程:

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

序号步骤工作内容1预处理(Preprocessing)C 编译器对各种预处理命令进行处理,包括(1)头文件包含、(2)宏定义的扩展、(3)条件编译的选择等2编译(Compilation)将预处理后的文件进行词法分析、语法分析、语义分析及优化后,生成相应的.s汇编文件3汇编(Assemble)将编译后的汇编代码翻译成机器码,生成.o目标文件4链接(Linking)通过链接器ld将目标文件和库文件链接在一起,生成可执行文件

链接可分为动态链接和静态链接:

序号链接描述1动态链接使用动态库进行链接,生成的程序在执行的时候需要加载所需的动态库才能运行。动态链接生成的程序小巧,但是必须依赖动态库,否则无法执行。2静态链接使用静态库进行链接,生成的程序包含程序运行所需要的全部库,可以直接运行,不过体积较大。 0 个人打赏 文章最后发布于: 2019-05-04 23:19:00
最新回复(0)