当前位置: 首页 > news >正文

Linux 练习二 (VIM编辑器 + GCC编译器 + GDB调试)


使用环境:Ubuntu18.04
使用工具:VMWare workstations ,xshell

  作者在学习Linux的过程中对常用的命令进行记录,通过思维导图的方式梳理知识点,并且通过xshell连接vmware中ubuntu虚拟机进行操作,并将练习的截图注解,每句话对应相应的命令,读者可以无障碍跟练。第二次练习的重点在于vim编辑器、GCC编译和GDB调试的使用。
  需要提前安装VIM、GCC。

VIM命令思维导图

  由于VIM命令的练习不容易截图,所以请读者自行练习VIM命令。
请添加图片描述

GCC编译器

请添加图片描述

1、GCC编译文件练习

编写一个c程序,使用GCC命令依次进行预编译,编译,汇编,链接,得到.i文件,.s文件,.o文件,和可执行文件
请添加图片描述

2、静态库动态库制作练习

在这里插入图片描述

  编写一个做两个数减法功能的函数sub,返回值为输入的两个数的差,然后将其编译为动态库,静态库,并使用静态库和动态库,编写usefunc.c,调用通过库调用函数,得到可执行的二进制。

将此函数编译成动态库

请添加图片描述

将此函数编译成静态库

请添加图片描述

静态库和动态库的比较

1、动态库只在执行时才被链接使用,不是直接编译为可执行文件,并且一个动态库可以被多个程序使用,故可称为共享库。
2、静态库将会整合到程序中,在程序执行时不用加载静态库,所以调用静态库的速度相较于动态库会快一些。
3、因此,静态库会使你的程序臃肿并且难以升级,但比较容易部署。而动态库会使你的程序轻便易于升级但难以部署

GCC优化选项 -On

  比如-O1主要进行线程跳转和延迟退栈两种优化,-O2和-O3各有其不同的优化。虽然优化可以加速代码运行速度,但是将给调试带来很大的挑战。因为代码优化后,原先在源程序中声明的变量可能不再使用,控制流也可能突然跳转到意外的地方,所有这些对调试来讲都是不好的。所以在调试的时候最好不要使用优化选项,只有在最终发布的时候才考虑将其进行优化。

GDB调试命令练习

练习一:编写一个程序,通过gdb调试,使用到gdb的b,n,s,info,backtrace,p等命令。

请添加图片描述
  这上述命令要熟练使用,大多都是英文单词首字母比较好记。再补充一些其他的命令。

在这里插入图片描述
请添加图片描述

练习二:练习gdb的x,bt等命令,练习定位段错误,调试core文件的步骤

在这里插入图片描述
请添加图片描述

http://www.lryc.cn/news/21471.html

相关文章:

  • python3 连接数据库 mysql PyMysql
  • 昇腾AI新技能,还能预防猪生病?
  • 模板方法模式(Template Method)
  • C C++ typedef的使用
  • Laravel框架03:DB类操作数据库
  • 数据结构期末复习总结(前章)
  • 设计环形队列
  • 面向对象之-接口鉴权
  • Python 多进程多线程线程池进程池协程
  • 【自然语言处理】基于句子嵌入的文本摘要算法实现
  • fiddler抓包
  • 【Linux】网络套接字编程
  • break与continue关键字
  • kafka使用入门案例与踩坑记录
  • 系统启动太慢,调优后我直呼Nice
  • java知识点
  • 文件的打开关闭和顺序读写
  • (十八)操作系统-进程互斥的软件实现方法
  • 2023年三月份图形化一级打卡试题
  • linux 防火墙管理-firewalld
  • 2023年最新大厂开发面试题(滴滴,华为,京东,腾讯,头条)
  • 2023年三月份图形化三级打卡试题
  • 蓝桥杯算法模板
  • python之并发编程
  • Vue.js自定义事件的使用(实现父子之间的通信)
  • 第12天-商品维护(发布商品、商品管理、SPU管理)
  • 动态分区分配计算
  • 【云原生】k8s的pod基本概念
  • 【史上最全面esp32教程】激光与食人鱼模块篇
  • 《代码整洁之道》二之有意义的命名