《深入分析GCC 》——1.2 GCC的特点

简介: GCC对于并行编译的支持。 在GCC 4.4.0中,已经提供了对OpenMP的完整支持。

本节书摘来自华章出版社《深入分析GCC 》一书中的第1章,第1.2节,作者 王亚刚 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.2 GCC的特点

GCC作为目前较为成功的编译系统之一,具有非常突出的优点,主要包括:

(1)GCC编译系统支持众多的前端编程语言,GCC 4.4.0中${GCC_SOURCE}/gcc/目录下包含了前端编程语言处理的目录及其代码(其中,${GCC_SOURCE}表示GCC源代码的主目录,下同),主要包括C、C++、Ada、Fortran、Java、Objective-C、Objective-C++等语言的前端处理,可以使用如下命令查看这些目录:

[GCC@localhost gcc-4.4.0]$ ls -l gcc
drwxrwxr-x.  3 GCC GCC   69632 Apr 21  2009 ada
drwxrwxr-x.  2 GCC GCC    4096 Nov 27  2013 cp
drwxrwxr-x.  2 GCC GCC    4096 Nov  6 15:14 fortran
drwxrwxr-x.  2 GCC GCC    4096 Oct  9 17:34 java
drwxrwxr-x.  2 GCC GCC    4096 Apr 21  2009 objc
drwxrwxr-x.  2 GCC GCC    4096 Apr 21  2009 objcp

(2)GCC支持众多的目标机器体系结构,具有良好的可移植性,GCC 4.4.0的${GCC_SOURCE}/gcc/conf?ig/目录下包含了GCC对目标处理器的支持情况,其中包括了各种主流的处理器,例如,arm、i386、mips以及alpha等,以下是GCC 4.4.0代码所支持的处理器列表:

alpha    arc        arm        avr        cris
crx        fr30        frv        h8300        i386
ia64    iq2000        m32c        m32r        m68hc11
m68k    mcore        mips        mmix        mn10300
pa        pdp11        picochip    rs6000        s390
score    sh        sparc        spu        stormy16
v850    vax        xtensa

(3)GCC具有丰富的配套工具链支持。

GCC不是一个孤立的编译工具,而是整个GNU工程中的一个组成部分。GNU工程中的其他软件,包括GNU C库glibc、GNU的调试工具gdb,以及GNU二进制工具链binutils(GNU Binutils Toolchains,例如汇编工具as,连接工具ld,目标文件分析工具objdump、objcopy等)等都与GCC关系密切,互相依赖。
可以使用下述的shell命令查看GNU二进制工具链中主要包括的工具:

[GCC@localhost paag-gcc]$ rpm -ql binutils  | xargs ls -l | grep "/usr/bin"
-rwxr-xr-x. 1 root root  24352 Oct 15  2014 /usr/bin/addr2line
-rwxr-xr-x. 1 root root  54444 Oct 15  2014 /usr/bin/ar
-rwxr-xr-x. 1 root root 527220 Oct 15  2014 /usr/bin/as
-rwxr-xr-x. 1 root root  26356 Oct 15  2014 /usr/bin/c++filt
-rwxr-xr-x. 1 root root  99212 Oct 15  2014 /usr/bin/gprof
-rwxr-xr-x. 1 root root 588116 Oct 15  2014 /usr/bin/ld
-rwxr-xr-x. 1 root root  38800 Oct 15  2014 /usr/bin/nm
-rwxr-xr-x. 1 root root 212216 Oct 15  2014 /usr/bin/objcopy
-rwxr-xr-x. 1 root root 276528 Oct 15  2014 /usr/bin/objdump
-rwxr-xr-x. 1 root root  54448 Oct 15  2014 /usr/bin/ranlib
-rwxr-xr-x. 1 root root 288560 Oct 15  2014 /usr/bin/readelf
-rwxr-xr-x. 1 root root  27196 Oct 15  2014 /usr/bin/size
-rwxr-xr-x. 1 root root  25832 Oct 15  2014 /usr/bin/strings
-rwxr-xr-x. 1 root root 212244 Oct 15  2014 /usr/bin/strip

(4)GCC提供可靠、高效、高质量的目标代码。

GCC是目前使用的最为广泛的编译器系统之一,众多工业级应用的实践证明,GCC编译系统生成的代码具有很高的可靠性和运行效率。

(5)GCC对于并行编译的支持。

在GCC 4.4.0中,已经提供了对OpenMP的完整支持。

相关文章
|
8月前
|
编译器 Linux 开发工具
|
5月前
|
前端开发 C语言
gcc动态库升级
gcc动态库升级
|
3月前
|
编译器 Linux C语言
gcc的编译过程
GCC(GNU Compiler Collection)的编译过程主要包括四个阶段:预处理、编译、汇编和链接。预处理展开宏定义,编译将代码转换为汇编语言,汇编生成目标文件,链接将目标文件与库文件合并成可执行文件。
104 11
|
5月前
|
编译器 开发工具 C语言
Gcc 链接文件
Gcc 链接文件
46 4
|
5月前
|
编译器 C语言 C++
MinGW安装gcc
MinGW安装gcc
114 0
|
7月前
|
自然语言处理 编译器 Go
GCC:GNU编译器
GCC:GNU编译器
101 0
|
7月前
|
Java 编译器 Linux
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
219 0
|
7月前
|
C语言
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令
|
8月前
|
C语言
gcc的简易用法(编译、参数与链接)
【5月更文挑战第14天】gcc的简易用法(编译、参数与链接)。
67 1
|
8月前
|
Unix Java 编译器
安装gcc
【5月更文挑战第14天】安装gcc。
139 1