Linux - gcc 学习笔记

15 篇文章 0 订阅
7 篇文章 0 订阅

  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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值