gcc、gdb、make简单用法

苏嵌                                                                                                                                            项目实战

学习日志                                          姓名:周甜             日期:0925

 

 

 

 

今日学习任务

 

学习gcc编译器、gdb调试器、make工程管理器

今日任务完成情况

 

 

对make工程管理器的使用不是很了解

今日开发中出现的问题汇总

 

 

今日未解决问题

 

今日开发收获

Gcc是Linux系统下最流行的编译系统全称GNU Compile Collection。GCC 也是 GNU 发布的最著名的软件之一。GCC 的功能非常强大,主要体现在两方面。

 1) GCC 可以为 x86、ARM、MIPS 等不同体系结构的硬件平台编译程序。

2) GCC 可以编译 C、C++、Pascal、Java 等数十种高级语言。

gcc 命令的使用格式为: gcc [选项] [文件名] [选项] [文件名]

 gcc 命令拥有数量庞大的编译选项,按类型可以把选项分为以下几大类。

1.“gcc -v” 可以查看 GCC 中 C 编 译器 gcc 的详细信息。

  1. 总体选项:用于控制编译的整个流程。 常用选项:

-c:对源文件进行编译或汇编。

-E:对源文件进行预处理。

-S:对源文件进行编译。

-o file:输出目标文件 file。

-v:显示编译阶段的命令。

  1. 语言选项:用于支持各种版本的 C 语言程序。 常用选项:

-ansi:支持符合 ANSI 标准的 C 程序。

  1. 警告选项:用于控制编译过程中产生的各种警告信息。 常用选项:

-W:屏蔽所有的警告信息。

-Wall:显示所有类型的警告信息。

-Werror:出现任何警告信息就停止编译。

  1. 调试选项:用于控制调试信息。 常用选项:

-g:产生调试信息。

  1. 优化选项:用于对目标文件进行优化。 常用选项:-O1:对目标文件的性能进行优化。

-O2:在-O1 的基础上进一步优化,提高目标文件的运行性能。

-O3:在-O2 的基础上进一步优化,支持函数集成优化。 -O0:不进行优化。

  1. 连接器选项:用于控制链接过程。 常用选项:

-static:使用静态链接。

-llibrary:链接 library 函数库文件。

-L dir:指定连接器的搜索目录 dir。

-shared:生成共享文件。

  1. 目录选项:用于指定编译器的文件搜索目录。 常用选项:

-Idir:指定头文件的搜索目录 dir。

-Ldir:指定搜索目录 dir。

最后来介绍一下gcc的工作流程,在 C 程序的编译过程中,依次要进行预处理、编译、汇编、链接四个阶段。

在预处理阶段主要是头文件的展开、宏替换、条件编译;

在编译阶段是语法检查、词法分析;

在汇编阶段是将汇编程序翻译成 CPU 可以识别的二进制文件;

在链接阶段是符号表的建立。

GDB 调试器(GNU Debugger)功能强大,调试速度比gcc快很多。

在使用gdb调试器前,要通过运行命令“gcc –g test.c -o test”对 test.c 进行编译,其中参数 g 的作用是把调试信息加入生成的 test 可执行文 件中,否则 GDB 就无法对 test 进行调试;

一些常见的命令:

  1. l(list的缩写)查看源文件、查看所有代码行数,gdb以10行为单位进行查看;
  2. b(breakpoint)设置断点;
  3. info b查看断点情况;
  4. r代码从首行开始运行,如程序中有断点则会在断点的前一行暂停运行;
  5. p 变量名 用来查看变量值;
  6. c 让程序继续往下运行,遇到下一个断点暂停;
  7. s(step)单步运行。

Make工程管理器

为了提高编译程序的效率,很多基于 Windows 平台上的开发工具都提供了工程管理器。 用户只需要点击一个“make”按钮就可以启动工程管理器对整个程序进行自动编译。在整个 编译的过程中是不需要人工干预的。这种工程管理器形象的称为全自动工程管理器。

 GCC 提供了半自动化的工程管理器 Make。所谓半自动化是指在使用工程管理器前需要 人工编写程序的编译规则。所有的编译规则都保存在 Makefile 文件中。全自动化的工程管 理器在编译程序前会自动生成 Makefile 文件。

Make工程管理器优越之处在于使用方便、调试效率高。

Makefile 文 件由以下三项基本内容组成。

1)需要生成的目标文件(target file)。

2)生成目标文件所需要的依赖文件(dependency file)。 3)生成目标文件的编译规则命令行(command)。

其中,Makefile 规定在书写 command 命令行前必须加一个键。

Make 工程管理器在编译程序时会检查每个依赖文件的时间戳,一旦发现某个依赖文件 的时间戳比目标文件要新,就会执行目标文件的规则命令来重新生成目标文件。这个过程称 为目标文件的依赖规则检查。依赖规则检查是 Make 工程管理器的最核心的工作任务之一。

一些常用的命令:

  1. make all 更新所有的依赖文件;
  2. make clean 删除所有的依赖文件;
  3. make install Make 会顺序执行命令“mkdir $(test_dir)”和“cp test $(test_dir)”,把 test 文件复制到 test_dir 变量指定的目录中去;
  4. make uninstall 把 变量 test_dir 指定的目录以及目录中的文件全部删除。

 

自我评价

 

 

 

今天通读了这三大工具是说明书,我对它们的使用有了更加深入地了解。

其他

 

 

猜你喜欢

转载自blog.csdn.net/qq_42267245/article/details/82871918