目录
对于在Linux系统上编译和调试C程序,首先,需要确保已经安装了合适的编译器。在大多数Linux发行版中,常用的C编译器是GCC。
1.检查GCC是否已经安装:![](https://i-blog.csdnimg.cn/blog_migrate/647544380e10d331b849119b5b02158b.png)
这里提供了有关系统上安装的 GCC(GNU 编译器集合)版本的信息。输出显示我的系统上安装了 GCC 版本 9.4.0,而这是在 Ubuntu 20.04.1 上。
2.使用包管理器来安装gcc:
如果GCC未安装,您可以使用包管理器来安装它。例如,在Ubuntu上可以使用以下命令:
sudo apt-get install build-essential
3.c程序执行需要经过四个步骤
(1) 预编译 :gcc -E main.c -o main.i
(2) 编译: gcc -S main.i -o main.s
(3) 汇编: gcc -c main.s -o main.o
(4) 链接: gcc main.o -o main
也可以一步编译gcc -o main main.c
4.make和makefile
管理工程 实现自动化编译 (和 vs 比较)示例:
对 main.c add.c max.c 三个文件进行编译(注意: gcc 前面必须是 table 键缩进,或者在上一行末尾敲换行,自动缩进到table键位上)
注:文件名必须是makefile
makefile文件
main.c文件
extern 关键字,链接其他文件
add.c文件
max.c文件
执行make命令
执行make clean命令
5.gdb调试
- gcc -o main main.c -g 切换debug
- gdb main 启动调试
- (gdb)出现 启动调试成功 ,可以输入命令
此时就进入了debug模式下
基础调试命令
1. l //显示 main 函数所在的文件的源代码
2. list 文件名:num //显示 filename 文件 num 行上下的源代码
3. b 行号 //给指定行添加断点
4. b 函数名 //给指点函数的第一有效行添加一个断点
5. info break //显示断点信息
6. delete 断点号 //删除指定断点
7. disable 断点号 //将断点设定为无效的,不加断点号,将所有断点设置为无效
8. enable 断点号 //将断点设定为有效的,不加断点号,将所有断点设置为有效
9. r(run) //运行程序
10. n(next) //单步执行
11. c ( continue) //继续执行,直接执行到下一个断点处
12. s //进入将要被调用的函数中执行
13. finish //跳出函数14. q //退出调试
15. p val //打印变量 val 的值
16. p &val //打印变量 val 的地址
17. p a+b //打印表达式的值
18. p arr(数组名) //打印数组所有元素的值
19. p *parr@len //用指向数组的指针打印数组所有元素的值
20. display //自动显示,参数和 p 命令一样
21. info display //显示自动显示信息
22. undisplay + 编号 //删除指定的自动显示
23. ptype val //显示变量类型
24. bt //显示函数调用栈
一些示例