编译、调试、makefile工程

159 阅读2分钟

编译、调试、makefile工程

一、GCC

1.GCC (GNU C Compiler)

官网gcc.gnu.org/

GCC是由GNU开发的编程语言编译器,GNU编译器套件包括C、C++、Java等,也包括了这些语言的库。

源代码文件(.c)经过编译得到可执行的应用程序。

2.GCC编译流程

1.预处理
gcc -E -o   目标文件1.i    源代码文件.c
生成后缀为.i的文件,原始C语言程序。

image-20230628164244680.png

2.编译
gcc -S -o   目标文件2.s    目标文件1.i
生成后缀为.s的汇编语言的原始程序

image-20230628164347260.png

3.汇编
gcc -c -o    目标文件3.o    目标文件2.s
将汇编语言转化成后缀为.o的二进制文件

image-20230628164435366.png

4.链接
gcc -o      目标文件3.o    目标文件
将二进制文件与库文件进行链接,生成可执行的目标文件

image-20230628164636677.png

5.执行

image-20230628164812994.png

也可以一次性编译完成

image-20230628170529865.png

二,GDB 调试

1.调试器功能

1.能够运行程序,设置程序运行的参数

2.能够让程序在指定条件下停止运行

3.能够在程序停止时检查所有参数情况

4.能够根据指定条件改变程序运行

2.调试

程序编译时需加-g

gcc -g  test.c -o test

image-20230629201514785.png

1.进入GDB
gdb test

image-20230629201559508.png

2.查看文件
l或ilst

image-20230629201624558.png

3.设置断点
b + 行号 或 break + 行号

image-20230629201702506.png

4.查看断点处情况
info b 或info breakpoints

image-20230629201914022.png

5.运行代码
r (run) 或 加上行号可以从指定位置开始运行

image-20230629202029901.png

在断点处停止,按c继续运行。

6.查看变量值
p + 变量名
7.观察变量
watch n
8.单步运行
n(next)

image-20230629202243190.png

9.程序继续运行
c(continue)

image-20230629202326741.png

10.退出GDB
q(quit)

image-20230629202341749.png

三、make工程管理器

makefile是由规则构成的

编写规则格式:

target1,target2 ……:dependence-file1,dependence-file2……
	command1
	command2

target:目标体(目标文件、可执行文件等)

depend-file:创建目标体所依赖的文件

command:要运行的命令(有tab缩进并独占一行)

image-20230629201105256.png

#makefile
hello:hello.c
	gcc hello.c -o hello

image-20230629201130674.png