linux编译C++代码

在linux环境下通过g++编译器和vim编辑器来编写程序,
介绍linux环境下g++编程和gdb调试以及makefile的编写。
vim helloworld.cpp
在这里插入图片描述

g++ -E helloworld.cpp >helloworld.i

通过执行上面的命令,输出预处理后的文件,如下面部分可以看到主要做宏的替换、注释的消除以及找到相关库文件。在该步骤不会进行语法错误检查。

cat helloworld.i |less

将预处理的文件转换成汇编语言,生成文件.s[编译器egcs]

g++ -S helloworld.cpp

在这里插入图片描述
3.汇编变为目标代码,生成.O文件
在该步骤进行词法和语法的检查,比如花括号不匹配,行末没有分号,关键字错误等。

g++ helloworld.cpp -o hello

在这里插入图片描述
gdb

当程序编译完成,需要对程序进行调试跟踪代码块的执行。gdb是GNU开发组织发布的一个强大的UNIX/Linux下的程序调试工具。主要有以下功能:

1.启动程序,可以按照用户自定义的要求运行程序。
2.可让被调试的程序在用户所指定的调试的断点处停住 (断点可以是条件表达式)。
3.当程序停住时,可以检查此时程序中所发生的事。
4.动态地改变程序的执行环境。

从功能上来看,gdb和一般的调试工具区别不大,可能习惯了图形化的调试工具暂时还不大习惯,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。­­­­­­­­­­­­­­­­­­­­­­­­­­­

g++ -g helloworld.cpp -o test
gdb test

l表示列出源码命令

l

在这里插入图片描述
break 4在源程序第4行设置断点
在这里插入图片描述
info break //显示断点信息Num Type Disp Enb Address What
==
r //运行程序,run命令简写Starting program
在这里插入图片描述
Breakpoint 1, main () at helloworld.cpp:16//在断点处停住6;
n //单条语句执行,next命令简写
在这里插入图片描述
(gdb) p i//打印变量result的值,print命令简写
在这里插入图片描述
在这里插入图片描述
bt查看函数堆栈
在这里插入图片描述

c //继续运行程序,continue命令简写。
在这里插入图片描述
q //退出gdb

参考文献
https://blog.csdn.net/weixin_39968640/article/details/116674174


版权声明:本文为qq_16792139原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。