原创
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
转载请注明原文地址: https://mac.8miu.com/read-63677.html