gcc

  GNU CC(通常称为GCC)是GNU项目的编译器,它能够编译C、C++语言编写的程序。

  gcc是Linux开发的基础,gcc能够支持多种不同的C语言版本,同时提供Linux、Unix、Windows下的编译版本。

  目前Windows下C/C++主要的编译器有Borland C++、VC++,但由于gcc是免费的,同时对代码的兼容性做的更加出色,所以在windows的C/C++编译器市场gcc的份额也越来越大。

 

使用gcc,程序员可以对编译过程有更多的控制,编译过程分为3个阶段。
  –预处理;
  –汇编;
  –链接。
程序员可以再编译的任何阶段结束后停止整个编译过程以检查编译器在该阶段输出的信息。
 
 
使用gcc,程序员可以控制生成二进制执行文件中调试代码的数量和类型。
和其他编译器一样,gcc也可以优化执行代码。
gcc是个交叉平台编译器,所以能够在当前CPU平台上为不同操作系统开发软件。
gcc对C和C++进行了一些扩展,有助于提高执行效率以及编译器进行代码优化。
gcc可以让跨平台编程更加容易,降低代码移植代价。
 
 
 
 
深入了解gcc之前,我们先看一个小例子。

#include <stdio.h>

int main(void)

{

  printf(“Hello world\n”);

  return 0;

}

 

在命令行键入命令编译和运行这段程序

$gcc -o hello hello.c

这行命令告诉gcc对源程序hello.c进行编译和链接,并使用参数-o指定创建名为hello的可执行程序。
整个过程看上去仿佛是一气呵成的,但其实是分几步的
  –预编译源代码;
  –编译目标代码;
  –链接程序。
 
 
预编译
  –在命令行键入命令。

$gcc -o hello1.c -E hello.c

  –这行命令告诉gcc对源程序hello.c进行预编译,预编译结果输出到hello1.c文件中。
 
 
编译
  –在命令行键入命令。

$gcc -o hello.o -c hello1.c

  这行命令告诉gcc对源程序hello.c进行编译,但不链接,编译输出到hello.o文件中。
 
 
链接
  –在命令行键入命令。

$gcc -o hello hello.o

  –这行命令告诉gcc对源程序hello.o进行链接,生成可执行程序hello。
 
 
gcc常用选项

 

参  数

含  义

-o filename

输出文件名,如果没指定filename,默认为a.out

-c

只编译,不链接

-E

预编译

-g

包含调试信息

-l

链接指定的库文件

-O

优化编译后的代码

-w

关闭所有告警信息

 

gcc是如何知道文件类型呢?
  –通过文件扩展名判断文件类型
 

扩展名

含  义

c

C语言源文件

cpp

C++源文件

s

汇编语言源文件

o

编译后的目标代码文件

a,so

编译后的库文件

 

编译C++源文件
  –我们把hello.c文件改名为hello.cpp。

$gcc -o hello hello.cpp

/tmp/cc65uzwL.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'

collect2: ld returned 1 exit status

–gcc编译报错,无法通过。
 
 
gcc默认只链接c的标准库,并不链接c++标准库
  –在命令行键入命令。

$gcc –lstdc++ -o hello hello.cpp

  –编译OK。

 

 

安装g++

rpm -ivh libstdc++-devel-4.4.6-4.el6.i686.rpm

rpm -ivh gcc-c++-4.4.6-4.el6.i686.rpm

 

g++是gcc的c++版本,会自动连接c++的标准库,如果编译c++程序建议使用g++
redhat6.3默认是不安装g++的,如果安装从系统安装盘中找到libstdc++-devel-4.4.6-4.el6.i686.rpm, gcc-c++-4.4.6-4.el6.i686.rpm两个文件
执行以下命令(注意先后顺序)

rpm -ivh libstdc++-devel-4.4.6-4.el6.i686.rpm

rpm -ivh gcc-c++-4.4.6-4.el6.i686.rpm

 

 

 

 

 
 
 
posted @ 2015-05-04 03:09  张仕传  阅读(925)  评论(0编辑  收藏  举报