一、介绍

     GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器。
     GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言,后来经过不断扩展能够支持更多的编程语言,如 C++、Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名为GNU编译器套件。

二、基本用法

1、语法

gcc [选项] 源文件 [选项] [目标文件]

2、选项列表

三、编译过程

Linux编译器——gcc-LMLPHP

1、预处理

     功能:宏替换、头文件展开、去注释、条件编译
     实例:gcc -E test.c -o test.i

2、编译

     功能:语法分析及纠错,无错则将c代码编译成汇编代码
     实例:gcc -S test.c/test.i -o test.s

3、汇编

     功能:将汇编代码编译成为机器可识别的二进制指令代码
     实例:gcc -c test.s -o test.o

4、链接

     功能:生成可执行文件或库文件

(1)静态链接

     在编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。
     静态库命名方式:libc.alib是前缀,.a是后缀
     实例:gcc -static test.o -o test

(2)动态链接

     在编译链接时,并没有把库文件的代码加入到可执行文件中,而是在程序执行时由链接文件(记录函数的地址信息)加载库,这样可以节省系统的开销,但是运行时依赖库文件。
     动态库命名方式:libc.solib是前缀,.so是后缀
     实例:gcc test.o -o test
     要点:gcc默认生成的二进制程序是动态链接的

10-06 11:56