GCC/GDB编译调试工具基础

1.简单介绍

Linux下的C,C++程序开发,一般都用GCC/G++/GDB工具

将C语言程序编译成可执行文件般都需经过以下4 个步骤。

(1)预处理 : 对源代码文件中的文件包含、宏定义、预编译语句进行分析和替换。

(2)编译(Compilation):根据编译器的语法规则,将高级语言转换为以.s为后缀的汇编语言文件。

(3)汇编(Assembly):将S和s为后缀的汇编语言文件经过预编译和汇编成为以.o为后缀的目标文件。

(4)连接(inkng);,当所有的目标文件都生成之后,将它们安排到可执行程序中恰当的位置上,同时,该程序所调用到的库函数也需要连接到合适的地方。

2.GCC

2.1 GCC信息

在Shell提示符下键入 “ gcc -v”,就会显示目前正在使用的GCC的版本及相关信息。

用rpm -q1 gcc 查看gcc文件信息。

2.2 GCC编译过程

GCC/G++是GNU中C和C+的编译器,其编译格式如下:

gcc [option l filename ]…

g++ [option l filename ]…

其中optins就是编译器所需要的参数, flename是文件名称。Linux 下的C和C++编译器将程序编译成

个可执行 文件需要经过以下4个步骤。

1)预处理(也称预编译):即进行预处理。在预处理过程中,对源代码文件中的文件包含、预编译语

句进行分析,使用-E参数。

2)编译 : 即调用cc进行编译。这个阶段根据输入文件生成以 .s 为后缀的汇编文件,使用-s参数。

3)汇编 : 即调用as进行编译,将.S 和.s为后缀的汇编语言文件汇编成为以 .o 为后缀的目标文件,使

用-c 参数。

4)连接 : 当所有的目标文件都生成之后,调用ld来完成最后的关键性工作,这个阶段就是连接。在连

接阶段,所有的目标文件被安排到可执行程序中恰当的位置上,同时,该程序所调用到的库函数也从

各自所在的档案库中连到合适的地方,使用-0参数。

对源代码文件来说,后缀名控制着缺省设定.

GCC : 认为预处理后的文件(.i)是C文件,并且设定C形式的连接.

G++ : 认为预处理后的文件(.ii)是C++文件, 并且设定c++形式的连接。

3. GDB调试工具简介

GDB比传统的C语言的开发环境具有更加强大的功能。

GDB作为功能强大的调试工具,可完成如下的调试任务。

(I)设置断点。

(2)监视程序变量的值。

(3)程序的单步执行。

(4)修改变量的值。

默认情况下,Linux 系统安装了GDB调试工具。

查看本机GDB版本信息的命令如下:

[root@localhost ch0202]# gdb -V

4.使用GCC编译C程序

  1. 先使用VIM等工具编辑源代码文件

  2. 使用gcc -c 命令编译源代码。

  3. 使用 gcc -o 命令连接程序。

  4. ./程序名 执行程序

     以上步骤可以直接使用 -o 参数一次性完成。
    

5.使用g++编译c++程序

(假设有一个c++源文件hello.c)

  1. 编译c++程序。
    g++ -c hello.c -Wno-deprecated

-Wno-deprecated 用于忽略头文件信赖的警告

  1. 连接程序
    g++ -o hello hello.o

  2. 执行程序
    ./hello

可以使用-o参数一步完成。 g++ -o hello hello.c -Wno-deprecated

6.使用GDB调试

1.运行 gdb bug 命令,装入bug可执行文件。

2.使用list 命令查看代码。

3.使用run命令执行程序。

4.使用where命令查看程序出错位置。

5.使用quit命令退出GDB调试器。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值