Linux应用程序开发工具--GCC编译器

时间:2022-03-15 21:46:27

GCC编译器是Linux系统中最流行的编译系统,它的有点有两个:

    1.GCC可以为X86,ARM等不同体系结构的硬件平台编译程序。

    2.GCC可以编译数十种不同的高级语言,如C,C++,JAVA等。

GCC编译器的命令格式为:

    gcc  选项  文件名  选项  文件名

而GCC拥有非常庞大的编译选项,主要分为一下几类:

(编译的流程为预处理-编译-汇编-链接(吧程序中所有的目标文件和所需的库文件连接在一起))

1.总体选项:控制编译的整个流程

    1)-E 对源文件进行预处理(进行头文件展开等工作)

    2)-S 对文件进行编译(进行语法检查(检查单词拼写以及语句语法,语义是否正确)并将文件转为汇编语言)

    3)-c 对文件进行汇编(或编译)(将文件翻译成CPU可识别的二进制文件)

    4)-o file 输出目标文件file

    5)   -v 显示编译阶段的命令

2.语言选项;用于支持各版本的C语言程序。

    -ansi:支持符合ANSI标准的C语言程序

3.警告选项:用于控制编译过程中产生的各种警告信息

    1)-W 屏蔽所有的警告信息

    2)-Wall 显示所有类型的警告信息

    3)-Werror 出现任何警告信息就停止编译

4.调试选项:用于控制调试信息。

    -g  产生调试信息

5.优化选项:用于对目标文件进行优化

    -01  对目标文件的性能进行优化

    -02  在-01的基础上进一步优化,提高目标文件的运行性能

    -03  在-02的基础上进一步优化,支持函数集成优化

    -00  不进行优化

6.连接器选项:用于控制链接过程

    -static  使用静态链接

    -l(Library) 链接Library函数库文件

    -L(dir)指定连接器的搜索目录dir

    -shared 生成共享文件

7.目录选项:用于指定编译器的文件搜索目录

    -I(dir)指定头文件的搜索目录

    -L dir 指定都所目录dir


Glibc是GNU推出的C语言函数库,其中包含了大量的函数库,libc是最基本的函数库,每个C程序都要实用libc函数库,此外常用的还有数学库(libm),加密库(libcrypt)等,C程序在调用Glibc中的函数库时,需要引用与函数库对应的头文件,同时在编译命令中需要加入某些函数库的链接参数,并使用符号-l进行连接,比如函数库libm的链接参数为m等,如:

gcc 选项 文件名 选项 文件名 -lm

Glibc一般分布在/lib和/usr/lib目录下,其中/lib目录下的函数库文件主要是给/bin目录下的系统程序使用的,而/uer/bin目录中的函数库文件主要是给/usr目录下的用户程序使用的。函数库文件后缀不同,其性质也不同:

    a  :  静态库文件

    la  :用来记录库文件信息的动态库文件

    so  :动态库文件

使用动态链接方式i编译程序时,动态库的符号链接文件会写入二进制文件中,这样,程序在运行时就可以通过符号链接找到指定的动态库文件了。

通过选项-static可以使用静态链接方式对程序进行编译(例: gcc  -static  test.c  -o  test)