当前位置: 首页 > 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文件的步骤

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

相关文章:

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

文章目录VIM命令思维导图GCC编译器1、GCC编译文件练习2、静态库动态库制作练习将此函数编译成动态库将此函数编译成静态库GCC优化选项 -OnGDB调试命令练习练习一:编写一个程序,通过gdb调试,使用到gdb的b,n,s&#xff0…...

python3 连接数据库 mysql PyMysql

python3PyMysql PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库 , 遵循 Python 数据库 API v2.0 规范 。 PyMySQL 安装 pip install PyMySQLPyMySQL 连接数据库 import pymysql pymysql.Connect(hostlocalhost,port 3306,user root,password **…...

昇腾AI新技能,还能预防猪生病?

国药集团动物保健股份有限公司(简称“国药动保”)是专业从事动物保健产品研发、生产和销售的国家高新技术企业,是国内少数几家具备新产品原创能力的动物保健企业。其中,猪圆环病毒灭活疫苗等市场份额位居行业前列。 “猪圆环病毒…...

模板方法模式(Template Method)

模式结构图 说明 基本方法是模板方法的组成部分。基本方法分为一下三种: 抽象方法 由抽象类声明,由其具体子类实现。C中就是纯虚函数。 具体方法 由抽象类或具体类声明并实现,子类可以进行覆盖也可以继承。C中是虚函数。 钩子方法 由抽象类…...

C C++ typedef的使用

一、为基本数据类型起别名 typedef int myint; myint x 5; "myint"是"int"的别名,可以使用"myint"来代替"int"声明变量,这个很好理解,但是也很少有人这么用吧。 二、为结构体起别名 …...

Laravel框架03:DB类操作数据库

Laravel框架03:DB类操作数据库一、概述二、数据表的创建与配置三、增删改操作1. 增加信息2. 修改数据3. 删除数据四、查询操作1. 取出基本数据2. 取出单行数据3. 获取一个字段的值4. 获取多个字段的值5. 排序6. 分页五、执行任意的SQL语句一、概述 按照MVC的架构&a…...

数据结构期末复习总结(前章)

作者的话 作为一名计算机类的学生,我深知数据结构的重要性。在期末复习前,我希望通过这篇博客给大家一些复习建议。希望能帮助大家夯实数据结构的基础知识,并能够更好地掌握数据结构和算法的应用。 一、绪论 数据:信息的载体&am…...

设计环形队列

文章目录1.思路分析1.1队列空满分析1.2出队分析2.循环队列设计1.思路分析 1.1队列空满分析 首先我们假设一个长度为4的环形队列 队头front 队尾rear 当队列为空时 frontrear 当队列满时 frontrear 所以我们无法判断队列是满的或者空的 因此我们多加入一个空间使队列长度为5&am…...

面向对象之-接口鉴权

1 需求 1.1 需求背景 为了保证接口调用的安全性,我们希望设计实现一个接口调用鉴权功能,只有经过认证之后的系统才能调用我们的接口,没有认证过的系统调用我们的接口会被拒绝。 2 需求分析 2.1 基础分析 对于如何做鉴权这样一个问题&…...

Python 多进程多线程线程池进程池协程

目录 一、线程与进程很简单的介绍 1.1 线程与进程的区别 二、多进程Process 2.1 多进程与多线程的区别 2.2 多进程为啥要使用队列 2.3 控制进程运行顺序 2.3.1 join , 2.3.1 daemon 守护进程 2.4 进程id 2.5 进程 存活状态is_alive() 2.5 实现自定义多…...

【自然语言处理】基于句子嵌入的文本摘要算法实现

基于句子嵌入的文本摘要算法实现人们在理解了文本的含义后,很容易用自己的话对文本进行总结。但在数据过多、缺乏人力和时间的情况下,自动文本摘要则显得至关重要。一般使用自动文本摘要的原因包括: 减少阅读时间根据摘要,选择自…...

fiddler抓包

一、工具介绍Fiddler是一个通过代理的方式来进行抓包工具,运行时会在本地建立一个代理服务,默认地址:127.0.0.1:8888。Fiddler开启之后,配置本机代理,再打开IE浏览器,IE的PROXY会自动变成127.0.0.1:8888&am…...

【Linux】网络套接字编程

前言 在掌握一定的网络基础,我们便可以先从代码入手,利用UDP协议/TCP协议进行编写套接字程序,明白网络中服务器端与客户端之间如何进行连接并且通信的。 目录 一、了解源目的IP、端口、网络字节序、套接字 端口号: 套接字&…...

break与continue关键字

1.概述 不知道大家有没有这样一种感受哈,有的时候容易混淆break语句和continue语句的用法,总是模棱两可,不敢确定自己是否使用正确了。正好,我们本篇的重点就是break和continue关键字的用法。 2.使用场景 Java中为啥会诞生break…...

kafka使用入门案例与踩坑记录

每次用到kafka时都会出现各种奇怪的问题,综合实践,下面汇总下主要操作步骤: Docker镜像形式启动 zookeeper启动 docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeperkafka启动 docker run --name kafka01 -p 9092:909…...

系统启动太慢,调优后我直呼Nice

问题背景最近在负责一个订单系统的业务研发,本来不是件困难的事。但是服务的启动时间很慢,慢的令人发指。单次启动的时间约在10多分钟左右,基本一次迭代、开发,大部分的时间都花在了启动项目上。忍无可忍的我,终于决定…...

java知识点

文章目录异常写法JVM加载反射访问private调用方法动态代理注解元数据&#xff1a;TargetRetention元注解泛型编写泛型擦拭法局限通配符无限定通配符(<?>)集合重写方法和实现类IO流字节与字符转换同步和异步可以设置编码的类Print*类Files时间与日期时区一种二种三种异常…...

文件的打开关闭和顺序读写

目录 一、文件的打开与关闭 &#xff08;一&#xff09;文件指针 &#xff08;二&#xff09; 文件的打开和关闭 二、文件的顺序读写 &#xff08;一&#xff09;fputc 1. 介绍 2. 举例 &#xff08;二&#xff09;fgetc 1. 介绍 2. 举例1 3. 举例2 &#xff08;三&…...

(十八)操作系统-进程互斥的软件实现方法

文章目录一、知识总览二、单标志法三、双标志先检查法四、双标志后检查法五、Peterson算法六、总结一、知识总览 二、单标志法 算法思想&#xff1a;两个进程在访问临界区后&#xff0c;会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进…...

2023年三月份图形化一级打卡试题

活动时间 从2023年3月1日至3月21日&#xff0c;每天一道编程题。 本次打卡的规则如下&#xff1a; 小朋友每天利用10~15分钟做一道编程题&#xff0c;遇到问题就来群内讨论&#xff0c;我来给大家答疑。 小朋友做完题目后&#xff0c;截图到朋友圈打卡并把打卡的截图发到活动群…...

linux 防火墙管理-firewalld

什么是Firewalld 当前很多linux系统中都默认使用 firewalld&#xff08;Dynamic Firewall Manager of Linux systems&#xff0c;Linux系统的动态防火墙管理器&#xff09;服务作为防火墙配置管理工具。 “firewalld”是firewall daemon。它提供了一个动态管理的防火墙&#x…...

2023年最新大厂开发面试题(滴滴,华为,京东,腾讯,头条)

2023年最新大厂开发面试题&#xff01;&#xff01;&#xff01; 滴滴篇 B树、B-树的区别? 数据库隔离级别&#xff0c;幻读和不可重复读的区别&#xff1f; 有 hell, well, hello, world 等字符串组&#xff0c;现在问能否拼接成 helloworld&#xff0c;代码实现。 快排算…...

2023年三月份图形化三级打卡试题

活动时间 从2023年3月1日至3月21日&#xff0c;每天一道编程题。 本次打卡的规则如下&#xff1a; 小朋友每天利用10~15分钟做一道编程题&#xff0c;遇到问题就来群内讨论&#xff0c;我来给大家答疑。 小朋友做完题目后&#xff0c;截图到朋友圈打卡并把打卡的截图发到活动群…...

蓝桥杯算法模板

模拟散列表拉链法import java.io.*; import java.util.*; public class a1 {static int n;static int N100003;static int[] hnew int[N];static int[] enew int[N];static int[] nenew int[N]; static int idx; static void insert(int x){int k(x%NN)%N;e[idx]x;ne[idx]h[k];…...

python之并发编程

一、并发编程之多进程 1.multiprocessing模块介绍 python中的多线程无法利用多核优势&#xff0c;如果想要充分地使用多核CPU的资源&#xff08;os.cpu_count()查看&#xff09;&#xff0c;在python中大部分情况需要使用多进程。Python提供了multiprocessing。 multiprocess…...

Vue.js自定义事件的使用(实现父子之间的通信)

vue v-model修饰符&#xff1a;.lazy、.number、.trim $attrs数据的透传&#xff0c;在组件&#xff08;这个是写在App.vue中&#xff09;,数据就透传到student组件中&#xff0c;在template中可以直接使用{{$attrs.students}}获取数据 通过defineProps定义的属性在attrs中就…...

第12天-商品维护(发布商品、商品管理、SPU管理)

1.发布商品流程 发布商品分为5个步骤&#xff1a; 基本信息规格参数销售属性SKU信息保存完成 2.发布商品-基本信息 2.1.会员等级-会员服务 2.1.1.会员服务-网关配置 在网关增加会员服务的路由配置 - id: member_routeuri: lb://gmall-memberpredicates:- Path/api/member/…...

动态分区分配计算

动态分区分配 内存连续分配管理分为&#xff1a; 单一连续分配固定分区分配动态分区分配&#xff08;本篇所讲&#xff09; 首次适应算法&#xff08;First Fit&#xff0c;FF&#xff09; 该算法又称最先适应算法&#xff0c;要求空闲分区按照首地址递增的顺序排列。 优点…...

【云原生】k8s的pod基本概念

一、资源限制 Pod 是 kubernetes 中最小的资源管理组件&#xff0c;Pod 也是最小化运行容器化应用的资源对象。一个 Pod 代表着集群中运行的一个进程。kubernetes 中其他大多数组件都是围绕着 Pod 来进行支撑和扩展 Pod 功能的&#xff0c;例如用于管理 Pod 运行的 StatefulSe…...

【史上最全面esp32教程】激光与食人鱼模块篇

文章目录食人鱼模块模块介绍连线说明操作激光模块模块介绍连线说明操作总结提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 食人鱼模块 模块介绍 采用食人鱼LED设计制作一个发光的电子模块&#xff0c;其实他的本质和LED无区别。 连线说明 名称接线…...

沈阳网站营销推广/b站视频推广的方法有哪些

如何新建PDF格式文件大多数人所接触到的PDF格式文件&#xff0c;大多是其他格式转换而来的&#xff0c;转换成PDF是为了它的安全、兼容、打英传输方便。也因为大多数软件可转换成PDF&#xff0c;如办公软件或各类设计软件。为现时印刷的主流文件格式。要建立一个新的PDF文件怎么…...

涪陵建设工程信息网站/外链优化

.vue文件其实是一个组件&#xff0c;今天这篇文章要讲的是.vue文件中监听input的输入值变化事件。需求是这页面中&#xff0c;改变input的值&#xff0c;就调用一个事件&#xff0c;第一想到的是oninput。 oninput 事件在用户输入时触发&#xff0c;菜鸟教程中的用法是&#x…...

360如何做网站/中小企业网站制作

/*FileReader共有4种读取方法&#xff1a;1.readAsArrayBuffer(file)&#xff1a;将文件读取为ArrayBuffer。2.readAsBinaryString(file)&#xff1a;将文件读取为二进制字符串3.readAsDataURL(file)&#xff1a;将文件读取为Data URL4.readAsText(file, [encoding])&#xff1…...

怎样建网站 步骤/葫岛百度seo

为了避免更matlab自带的libsvm冲突&#xff0c;这里把lsvmtrain.mexw64改成libsvm_svmtrain.mexw64。代码如下&#xff1a;data[176 70;180 80;161 45;163 47];label[1;1;-1;-1];modellibsvm_svmtrain(label, data);%此处用libsvm_svmtrain&#xff0c;不是svmtraintestdata[19…...

简洁大气的企业网站/seo优化与品牌官网定制

2019独角兽企业重金招聘Python工程师标准>>> 今天看element-react源码的时候&#xff0c;又看到了这张似曾相识却又异常陌生的老面孔&#xff0c;那就是Function.prototype.apply()... import React from react; import PropTypes from prop-types; import classnam…...

自己弄网站怎么弄/seo优化排名软件

进入vi的命令 vi filename :打开或新建文件&#xff0c;并将光标置于第一行首 vi n filename &#xff1a;打开文件&#xff0c;并将光标置于第n行首 vi filename &#xff1a;打开文件&#xff0c;并将光标置于最后一行首 vi /pattern filename&#xff1a;打开文件&…...