GUNCC(通常成为GCC)是GUN项目的编译器,它能够编译c、c++ 、java 语言编写的程序,它是一个编译器的集合。
gcc是Linux开发的基础, gcc能够支持多种不同版本的c语言,同时提供Linux, Unix,Windwos下的编译版本。
使用gcc,程序员可以对编译过程有更多的控制,编译过程分为三个阶段:
-预处理
-汇编
-连接
程序员可以在编译的任何阶段结束后停止整个编译过程以检查编译器在该阶段输出的错误。
使用gcc,程序员可以控制生成二进制执行文件中调试代码的数量和类型。
和其他编译器一样,gcc也可以优化执行代码
Gcc是一个交叉平台编译器,所以能够在当前cou平台上为不同操作系统开发软件
Gcc对c和c++进行了一些扩展,有助于提高执行效率
Gcc可以让跨平台编程更加容易, 降低代码移植代价。
Gcc 编译连接:
用vi 创建一个 test.c文件
#incldue<stdio.h>
#include<stdlib.h>
int main(int arg, char *args[])
{
If(arg<= 2)
printf(“请输入两个数\n”);
else
{
inta = atoi(args[1]);
intb = atoi(args[2]);
printf(“两个数的和为 : \n”, a+n);
}
return0;
}
在终端输入命令:
$gcc–o test test.c
这个命令告诉gcc对源程序test.c进行编译和连接,并使用参数-o制定创建的可执行程序名为test否则默认 为a.out
整个过程看上去似乎是一个步骤,其实不然这个过程仍然是分为三个步骤:
-预编译源代码
-编译目标代码
-链接程序
在终端输入:
$gcc–o test1.c –E test.c
-E选项的意义是 只进行预编译, 预编一般都是处理宏 和 #include 等 展开
生成的文件同样是源代码。
在预处理后的代码 test1.c如图
在终端输入
$gcc–o test.o –c test.c(windows 下用vc 生成的目标文件后缀是obj)
-c 选项的指令的意义是 只编译生成目标代码。这样做的一个好处就是让你能够跟踪你的错误在哪一个阶段,在编译阶段的错误往往是语法错误,连接阶段则有连接错误。
Gcc的常用选项:
-o filename 指定生成文件的文件名为filename
-c 只编译源文件
-Wall 开启所有警告信息 一般都用到这个选项
-g 包含调试信息
-l 链接制定的库文件
-E 只进行预编译
-O 优化编译后的代码
GCC 通过文件后缀来判断文件类型
C c语言源文件
Cpp c++语言源文件
S 汇编语言源文件
o 编译后的目标代码文件
a,so 编译后的库文件
需要注意的地方 gcc默认只连接c的库,如果需要使用c++的库则需要使用-l选项
格式如下:
gcc–o test test.o –lstdc++ stdc++ 是库名称
lddfilename 加可执行文件名可以查看文件调用了哪些库
nmfilename 可以查看调用了哪些函数
如果redhat 没有安装 g++的 话是不能编译cpp文件的,其实不用着急
在redhat的镜像文件的Packages文件夹中有 如下文件
按顺序安装 这两个文件即可(可能版本不同文件名数字部分也会不同):
libstdc++-4.4.7-3.el6.x86_64.rpm(64位)
gcc-c++-4.4.7-3.el6.x86_64.rpm
libstdc++-4.4.7-3.el6.i686.rpm(32位)
gcc-c++-4.4.7-3.el6.i686.rpm
rpm–ivh filename