在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

linux编译C++代码相关推荐

  1. linux编译测试代码,rtc在linux上的测试代码

    点击(此处)折叠或打开 rtc在linux上的测试代码 . rtc应用很广泛,在PC机和嵌入式上面几乎都能看到.下面就用最简单的代码做一个演示.相应的分析请看linux源代码中的分析文档.代码如下: ...

  2. linux编译llvm代码

    文章1 Ubuntu 16.4安装llvm和clang--从源代码的方式构建 从这篇文章构建后,出现了两个问题,一个是Ubuntu扩容,一个是Ubuntu增加swap交换空间 Ubuntu扩容 Ubu ...

  3. linux编译c代码错误,linux - 使用ASAN时如何解决错误“无法运行C编译程序” - 堆栈内存溢出...

    问题:运行configure脚本可以正常工作,可以使用C编译器并运行生成的程序. 一旦添加了ASAN,配置脚本就会抱怨生成的程序无法运行. ./configure checking for a BSD ...

  4. linux 编译c_含有CGO代码的项目如何实现跨平台编译

    目前小菜刀的项目中需要用到SQLite数据库,https://github.com/mattn/go-sqlite3支持database/sql接口,采用Go的标准接口有利于项目后续扩展,因此选择了该 ...

  5. 2.Linux下程序代码的编译

    一.编译工具 前言 1)编译器和目标程序运行在相同架构的编译过程,被称为本地编译. 2)编译器和目标程序运行在不同架构的编译过程,被称为交叉编译. 为什么需要交叉编译?因为编译过程往往需要很大的算力和 ...

  6. 初试linux编译(ubuntu+vim)+玩转智能蛇

    一.初试linux编译(ubuntu+vim) 步骤: ①下载vmware15+ubuntu桌面版映像 ②安装ubuntu ③下载vim+gcc 在ubuntu终端输入: sudo apt-get i ...

  7. linux下运行yolo,deepin(linux)编译安装yolo v4测试效果

    # 背景 五一放假的最后一天我也凑了个热闹,试一下新鲜出炉的yolo v4, 由于没有装CUDA和CUDNN,只试了一下在CPU上的速度和效果,电脑环境及编译依赖如下: * deepin 15.11桌 ...

  8. centos linux编译c,紧急提醒!Linux是如何编译C语言程序文件的?CentOS 8的gcc使用方法介绍...

    一句话告诉你gcc怎么编译C文件 执行命令 gcc Tristone.c  -o Tristone 解释:"Tristone.C"Tristone可执行文件编译,编译完成后&quo ...

  9. linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14

    linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14的方法对于 我这个小菜菜来讲是非常的复杂的还好有这篇文章,下面一起来看看吧. 一.使用系统镜像文件配置本地yum源 1 ...

  10. linux libvpx编译安装,linux编译安装时常见错误解决办法

    **configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution** 复 ...

最新文章

  1. 排序算法7---快速排序算法
  2. [SCOI2005]栅栏(贪心+二分+dfs)难度⭐⭐⭐⭐
  3. js如何判断字符串里面是否含有某个字符串
  4. vagrant 本地添加box 支持带版本号
  5. react源码解析之stack reconciler
  6. 组合CPU和DRAM
  7. 二叉堆的操作总结(insert+deleteMin+increaseKey+decreaseKey+percolateDown+percolateUp)
  8. java可视化压缩_WEB可视化技术发展
  9. java时间往后一天_如何在Java中将日期增加一天?
  10. C#学习笔记-ContextMenuStrip
  11. IOCCC.1984.anonymous.c.解析
  12. vue视频播放——vue-video-player
  13. Robot Framework(三):RIDE工具简介
  14. 梦想从来不是手里的钻石,而是放到天上的风筝!
  15. 反问疑问_反问疑问句
  16. 2022高处安装、维护、拆除考试模拟100题及模拟考试
  17. latex输入3.3.1类型的标题
  18. 基于Flask的文章内容管理系统(CMS)
  19. 文墨绘学21天习惯养成方法,学好就会优秀
  20. Spring 事务管理@transactional 的实现原理和使用

热门文章

  1. Membership Leakage in Label-Only Exposures论文解读
  2. 凸优化第五章对偶 5.2 Lagrange对偶问题
  3. 年入百万的表弟给我上一课:互联网思维该怎么接地气
  4. 树莓派安装DLNA实现流媒体服务器
  5. 24小时从0到1开发阴阳师小程序
  6. 人和人之间不要靠的太近
  7. 常用iOS游戏开发工具与SDK
  8. 2013中国微信公众平台用户研究报告
  9. 关于TFS的文档和报告打叉的解决
  10. 使用JavaFX打开fxml,找不到打开的图形界面