一、gcc编译
(一)直接使用gcc编译
gcc hello.c:直接使用gcc编译.c文件只会生成一个a.out可执行文件,每次gcc hello.c都会覆盖一次a.out,执行./a.out运行.c文件。
gcc hello.c -o hello:借助-o选项确定输出可执行文件名,hello效果==a.out

多文件编译:gcc a.c b.c -o a
(二)gcc编译过程
1.预处理
gcc -E 源文件 -o 预处理后文件.i:处理源文件中的#include、#define等预处理指令,将头文件内容插入,替换宏定义;生成预处理后的文件(.i后缀)。
2.编译
gcc -S 预处理后文件.i -o 汇编文件.s:把预处理后的文件转为汇编语言代码,期间开展语法、语义分析及优化;得到汇编语言文件(.s 后缀)。
3.汇编
gcc -c 汇编文件.s -o 目标文件.o:将汇编代码转换为目标机器码,形成目标文件;生成目标文件(.o 后缀)。
4.链接
gcc 目标文件.o -o 可执行文件:把目标文件与所需库文件(静态库或动态库)链接,解决函数和变量引用问题;生成可执行文件。
(三)gcc常用选项

二、gdb调试
(一)启动和退出GDB
1. 要使用 GDB 调试程序,需要在编译时使用-g选项,为可执行文件添加调试信息如:
gcc -g -o program program.c:-g选项告诉 GCC 在生成的可执行文件program中包含调试信息
2. 启动:在终端中输入gdb 可执行文件名即可启动 GDB 并加载相应的可执行文件;
3. 退出:在 GDB 命令行中输入quit或q,然后回车即可退出gdb。
(二)gdb调试命令

(三)gdb工作流程
1.编译程序:gcc -g -o hello hello.c
2.启动gdb并加载程序:gdb hello(可执行文件名)进入gdb调试工具中。
3.设置断点,暂停程序执行检查状态:在gdb中输入b/break设置断点。
4.运行程序(run运行程序、c/continue继续运行程序),执行到断点处暂停,进行单步调试(n不进入函数、s进入函数)或查看变量值(print/p 变量名)。
5.判断是否有断点,有则继续执行到断点,无则运行到程序结束。
网硕互联帮助中心


评论前必须登录!
注册