下面我们将分点对GCC MAKE GDB进行详细描述。首先是gcc

1、我们可以通过指令“gcc -v可以查看GCC中C编译器gcc的详细信息,如图1所示:

对gcc、make、gdb的深层认知

 

2、gcc命令的使用格式为:gcc【选项】【文件名】【选项】【文件名】

 

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

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

常用选项:

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

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

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

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

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


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

常用选项: -ansi:支持符合 ANSI 标准的 C 程序。


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

常用选项: -W:屏蔽所有的警告信息。 -Wall:显示所有类型的警告信息。 -Werror:出现任何警告信息就停止编译。

 

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

常用选项: -g:产生调试信息。

 

优化选项:用于对目标文件进行优化。

常用选项:

-O1:对目标文件的性能进行优化。

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

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

-O0:不进行优化。

 

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

常用选项:

-static:使用静态链接。

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

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

-shared:生成共享文件。

 

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

常用选项:

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

-Ldir:指定搜索目录 dir。

此外,还有配置选项等其他选项,这里不做介绍了。

 

4、gcc工作流程如下所示:

首先创建test.c文件,如图2所示

对gcc、make、gdb的深层认知

①预处理阶段,发出指令:gcc -E test.c -o test.i

②编译阶段,发出指令:gcc -S test.i -o test.s

③汇编阶段,发出指令:gcc -c test.s -o test.o

④链接阶段,发出指令:gcc test.o -o test

 

然后是make:

①、Make 工程管理器是完全根据 Makefile 文件中的编译规则命令进行工作的。Makefile 文 件由以下三项基本内容组成。

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

(2)生成目标文件所需要的依赖文件(dependency file)。

(3)生成目标文件的编译规则命令行(command)。

这三项内容按照如下格式进行组织:

target file :dependency file

    command

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

 

②Make 工程管理器编译test程序的过程如下:

(1)Make 工程管理器首先会在当前目录下读取 Makefile 文件。

(2)查找 Makefile 文件中的第一个目标文件(在本例中为 test),该文件也是 Make 工程 管理器本次编译任务的最终目标。

(3)把目标文件 test 的依赖文件当作目标文件进行依赖规则检查。

 

最后是gdb:

我们可以使用命令“gdb test”命令启动 GDB 对之前的test进行调试:

[[email protected] home]# gdb test,如图3所示

对gcc、make、gdb的深层认知

 

可以看到,GDB首先显示了版本信息和库信息。随后GDB停留在符号“(gdb)”处等待用户输入调试命令。GDB 提供了大量的命令来实现各种调试功能,后面我们会慢慢接触到。

 

综上所述,相信大家对于gcc、make、gdb有了更深层次的了解,希望对于大家的IT生涯有所帮助。

相关文章:

  • 2021-04-13
  • 2021-05-06
  • 2021-09-08
  • 2021-11-07
  • 2021-08-23
  • 2022-02-09
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-31
  • 2022-12-23
相关资源
相似解决方案