上QQ阅读APP看书,第一时间看更新
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/config/目录下包含了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的完整支持。