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
linux编译C++代码相关推荐
- linux编译测试代码,rtc在linux上的测试代码
点击(此处)折叠或打开 rtc在linux上的测试代码 . rtc应用很广泛,在PC机和嵌入式上面几乎都能看到.下面就用最简单的代码做一个演示.相应的分析请看linux源代码中的分析文档.代码如下: ...
- linux编译llvm代码
文章1 Ubuntu 16.4安装llvm和clang--从源代码的方式构建 从这篇文章构建后,出现了两个问题,一个是Ubuntu扩容,一个是Ubuntu增加swap交换空间 Ubuntu扩容 Ubu ...
- linux编译c代码错误,linux - 使用ASAN时如何解决错误“无法运行C编译程序” - 堆栈内存溢出...
问题:运行configure脚本可以正常工作,可以使用C编译器并运行生成的程序. 一旦添加了ASAN,配置脚本就会抱怨生成的程序无法运行. ./configure checking for a BSD ...
- linux 编译c_含有CGO代码的项目如何实现跨平台编译
目前小菜刀的项目中需要用到SQLite数据库,https://github.com/mattn/go-sqlite3支持database/sql接口,采用Go的标准接口有利于项目后续扩展,因此选择了该 ...
- 2.Linux下程序代码的编译
一.编译工具 前言 1)编译器和目标程序运行在相同架构的编译过程,被称为本地编译. 2)编译器和目标程序运行在不同架构的编译过程,被称为交叉编译. 为什么需要交叉编译?因为编译过程往往需要很大的算力和 ...
- 初试linux编译(ubuntu+vim)+玩转智能蛇
一.初试linux编译(ubuntu+vim) 步骤: ①下载vmware15+ubuntu桌面版映像 ②安装ubuntu ③下载vim+gcc 在ubuntu终端输入: sudo apt-get i ...
- linux下运行yolo,deepin(linux)编译安装yolo v4测试效果
# 背景 五一放假的最后一天我也凑了个热闹,试一下新鲜出炉的yolo v4, 由于没有装CUDA和CUDNN,只试了一下在CPU上的速度和效果,电脑环境及编译依赖如下: * deepin 15.11桌 ...
- centos linux编译c,紧急提醒!Linux是如何编译C语言程序文件的?CentOS 8的gcc使用方法介绍...
一句话告诉你gcc怎么编译C文件 执行命令 gcc Tristone.c -o Tristone 解释:"Tristone.C"Tristone可执行文件编译,编译完成后&quo ...
- linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14
linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14的方法对于 我这个小菜菜来讲是非常的复杂的还好有这篇文章,下面一起来看看吧. 一.使用系统镜像文件配置本地yum源 1 ...
- linux libvpx编译安装,linux编译安装时常见错误解决办法
**configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution** 复 ...
最新文章
- 排序算法7---快速排序算法
- [SCOI2005]栅栏(贪心+二分+dfs)难度⭐⭐⭐⭐
- js如何判断字符串里面是否含有某个字符串
- vagrant 本地添加box 支持带版本号
- react源码解析之stack reconciler
- 组合CPU和DRAM
- 二叉堆的操作总结(insert+deleteMin+increaseKey+decreaseKey+percolateDown+percolateUp)
- java可视化压缩_WEB可视化技术发展
- java时间往后一天_如何在Java中将日期增加一天?
- C#学习笔记-ContextMenuStrip
- IOCCC.1984.anonymous.c.解析
- vue视频播放——vue-video-player
- Robot Framework(三):RIDE工具简介
- 梦想从来不是手里的钻石,而是放到天上的风筝!
- 反问疑问_反问疑问句
- 2022高处安装、维护、拆除考试模拟100题及模拟考试
- latex输入3.3.1类型的标题
- 基于Flask的文章内容管理系统(CMS)
- 文墨绘学21天习惯养成方法,学好就会优秀
- Spring 事务管理@transactional 的实现原理和使用