本文目录
- 一、编译
- 1. gcc/g++编译器
- 2. gcc/g++安装
- 3. 代码编译过程
- 4. gcc编译
- 二、调试
- 1. 下载gdb调试器
- 2. gdb 调试器使用步骤
一、编译
1. gcc/g++编译器
对于.c 格式的 C 文件,可以采用 gcc 或 g++编译。
对于.cc、.cpp 格式的 C++文件,应该采用 g++进行编译。
2. gcc/g++安装
build-essential是一个包含编译软件所需要的基本包集合的元包。安装GCC、G++、Make等基本工具,这些工具是编译大部分源代码所必需的。
sudo apt-get install build-essential
3. 代码编译过程
假设我们两个源文件名称为test.c
和train.c
。
(1)预处理: 预处理器将对源文件中包含的头文件和宏定义进行展开。
使用gcc -E test.c -o test.i
,这里test.i
就是预处理后的文件。train.c文件同理。
(2)编译: 将预处理后的源文件编译成汇编文件。
使用gcc -S test.i -o test.s
,对预处理后的文件编译为汇编文件。train.c文件同理。
(3)汇编: as 将汇编文件编译成目标文件(二进制机器码文件)。
使用as test.s -o test.o
,将汇编文件转为了二进制机器码。train.c文件同理。
(4)链接: 将所有的目标文件(二进制文件)进行链接,得到一个可执行二进制文件。
使用gcc test.o train.o -o exefile
,将所有的二进制文件进行链接,得到可执行文件exefile (文件名自定)。连接完成后,我们就可以使用命令 ./exefile 去执行文件。
4. gcc编译
上述中的gcc编译过程内容,只是为了清晰的看到gcc整个编译流程。在实际使用中,如果一条一条代码去执行编译过程会非常繁琐,这里我们只需要使用一行代码就可以完成上述所有流程。
假设源文件还是test.c
和train.c
。
这里我们直接使用gcc test.c train.c -o exefile
,就可以直接生成最终的可执行文件。
二、调试
1. 下载gdb调试器
sudo yum install -y gdb
2. gdb 调试器使用步骤
-
编译程序:
gcc -g test.c -o exefile
,使用-g
选项在目标文件中产生调试信息,用于 gdb 调试。 -
启动gdb:
gdb exefile
,运行调试器并打开调试文件。 -
显示源码:
l 1
,按回车一直显示完所有代码。 -
打断点:使用
break 函数名
,在函数入口处打断点。或者break 行号
,在某行打断点。或者break 文件名:行号
,在某个文件的行号处打断点
(1)显示所有断点信息:info break
。
(2)删除断点:d 断点号
。假设删除断点2。
(3)开启/关闭断点。关闭断点:disable 断点号
。开启断点:enable 断点号
。
-
运行程序:使用
run
,或者直接输入 r。
-
退出调试:
quit
。