Linux开发工具使用

一、Linux软件包管理器 yum

软件包和软件包管理器, 就好比 "App" 和 "应用商店" ,我们现在要安装的yum就是相当于在我们的Linux终端安装一个"应用商店"。
但使用yum时,我们一定要保证主机(虚拟机)网络畅通!这点也非常好理解,因为在日常操作中我们的手机进入应用商店也是必须要联网的。
我们可以通过 ping 指令检验网络的速度:

ping [网址]

我们这里以www.csdn.com为例:

1.搜索软件

在软件商城里下载软件我们一定要进行相关的搜索对不对?我们现在来看看使用yum如何进行相关软件的搜索:

yum list | grep [软件名]

[| grep]是以列表的形式列出,[软件名]可以是你想要的软件全名或者部分名。

这里以 yum list | grep nb 来演示一下:

2.下载软件

我们想来下载一下软件,我们输入一下 yum install nb ,现在我们来看一下操作系统给我们的提示
注意到最后一行,需要我们是 root 才可以下载软件(软件需要下载到root用户目录下的某个文件,然后拷贝到系统中),而之前我们又学过一个指令,让我们能直接行使 root 的权力而不切换到 root 用户—— sudo ,下面我们来看看完整指令:

sudo yum install [软件名]

 但是当我们执行sudo语句时,可能会产生以下的报错,这是因为系统检测到我们当前用户并没有在 sudoer 这个文件中配置(好比我访问你的私有成员但是我不是友元函数),这个问题我们在上一篇博客中也讲过,或者可以直接跳转到本篇博客的 vim 中会教大家配置。

3.卸载软件

卸载软件和下载软件其实都是差不多的,我们还是要以root的身份卸载。

sudo yum remove [软件名]

执行 remove 时,系统还会询问是否删除[yes/No]:

我们还有办法让系统不再询问:sudo yum -y remove [软件名]
其中,-y 就是直接回答了yes

4.实践一下

如果当前用户没有在sudoer文件中,可以直接用root登录,给大家介绍一个好玩的软件:
sudo yum install sl
下载好后我们输入sl运行,就会有一辆小火车从屏幕前走过。

二、Linux编辑器 vim

我们在windows下编译有VS,而我们之前在Linux下只是学了一个记事本Nano,不禁好奇Linux下没有什么更高级的语言编辑器了吗?当然有,我们先来学习一下vim

1.认识vim

vim不只是简单的指令,我们先要来学习一下什么是vim呢?
vim是一款多模式的编辑器,但是我们只需要学习它的三个模式就好了:

命令模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入[插入模式]下,或者进入[末行模式]
插入模式:只有在[插入模式]下,才可以做文字输入,按[ESC]键可回到命令行模式。
末行模式:文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,[shift+:]即可进入该模式。

2.vim的基本操作

进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

vim test.c

当我们用vim打开一个文件时,
1.首先进入的是[命令模式],我们需要手动输入[i]进入[插入模式]。
2.最后编辑完文本按[Esc]就可以回到命令模式,再按[shift+;]可以进入[底行模式](此时光标也是在最后一行)。
3.再输入wq(保存并退出)或q!(强制退出,某些时候wq不管用时可用)即可退出文件。、

3.vim正常模式命令集

我们再来多讲一些批量化注释和批量去注释化的操作:

批量化注释:

批量化去注释:

4.vim配置sudoers

5.vim插件

在VS中我们有自动纠错或者自动补齐等功能,但是我们的vim编辑器就好像最原始的Dec-C++一样,什么功能都没有,这里就要用到我们的一些插件啦,类似游戏里的mod一样,这里我们提供一个链接,但是只能centos7的用户使用,也可以自己去网上搜罗顺手的插件。

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o./install.sh && bash ./install.sh

三、Linux调试器 gbd

程序的发布方式有两种,我们在使用VS时也可以看到,分为release版本和debug版本,其中release版本一般是发行版本,而debug版本是程序员进行程序编写测试时的版本。
在Linux中,gcc/g++编译出的自动是release版本,如果想让其生成debug版本,需要加-g。

现在我们要聊的就是Linux下进行程序调试的操作,也就是VS中的F10或F11。

进入调试:gdb binFile (binFile即此次要调试的文件名)
(gdb都支持简写,以下命令可以写全也可以写首字母)

退出调试:[ctrl+d]或[quit]调试命令

list/l [行号]:显示binFile源代码
(会记录上次显示的末尾,若继续使用则会接着上次的末尾继续往下列,每次列10行)。
list/l [函数名]:列出某个函数的源代码。
r / run:运行程序。
n / next:单条执行(类似于F11)。
s / step:进入函数调用。
break / b 行号:在某一行设置断点(类似于F9)。
delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点
disable breakpoints:禁用断点
enable breakpoints:启用断点
break [函数名]:在某个函数开头设置断点。
info break :查看断点信息。
finish:执行到当前函数返回,然后停下来等待命令。
print / p:打印表达式的值,通过表达式可以修改变量的值或者调用函数。
p 变量:打印变量值。
set var:修改变量的值
continue / c:从当前位置开始连续而非单步执行程序
run / r:从开始连续而非单步执行程序
info / i breakpoints:参看当前设置了哪些断点
display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪
until X行号:跳至X行
breaktrace / bt:查看各级函数调用及参数
info(i) locals:查看当前栈帧局部变量的值
quit:退出gdb

四、Linux项目自动化构建工具 make/Makefile

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率,其中make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

1.简单认识makefile

首先我们先来见一下什么是makefile:
然后我们再随便创建一个C语言文件:

我们在makefile中编写如下代码:

然后我们退出以后直接使用命令[make],我们发现系统直接帮我们执行了代码的编译,并形成了名为mytest的可执行文件:

然后我们再执行[make clean],我们发现,我们刚才生成的可执行程序被删除了:
有了这些初步认识,我想我们对make和makefile也有了一定的了解,下面我们来讲讲它的结构。

2.makefile基本结构

我把makefile文件中分了模块,我们现在逐个来说明。

依赖关系:依赖方法要对应的若干文件,mytest:test.c

依赖方法:必须以[Tab]开头(不能是4个空格)对依赖关系进行的相关操作,
                   gcc -o mytest test.c

目标文件:通过依赖方法生成的文件名称,mytest

依赖关系列表:test.c,可以为空,若多个文件可用空格分隔(test1.c test2.c)

.PHONY:其后面的内容会被强制执行

一些特殊符号的含义:@指代目标文件,^指代依赖关系列表,$可以理解为读取符号

类似于宏操作:bin目标文件,src依赖关系列表,可直接替换

3.makefile原理

初识makefile原理

1.make会在当前目录下找名字叫“Makefile”或“makefile”的文件。
2. 如果找到,它会找文件中的第一个目标文件,在上面的例子中,他会找到“mytest”这个文件,并把这个文件作为最终的目标文件。
3.makefile会自上而下根据依赖关系执行。

4.如果有多条依赖关系,makefile会依次执行每条关系,如图(类似递归调用)
这就是整个make的依赖性,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。

makefile对最新的可执行程序默认不会再重新生成:
为什么会这样?提高编译效率。

那么makefile如何得知这个程序已经被编译过了呢?

makefile会对比可执行文件的最近修改时间和源文件最近的修改时间。

makefile是不是很聪明呢?

——The End——

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分类问题经典算法 | 二分类问题 | Logistic回归:公式推导

目录 一. Logistic回归的思想1. 分类任务思想2. Logistic回归思想 二. Logistic回归算法:线性可分推导 一. Logistic回归的思想 1. 分类任务思想 分类问题通常可以分为二分类,多分类任务;而对于不同的分类任务,训练的主要目标是…

RabbitMQ(三):AMQP协议

目录 1 AMQP协议1.1 AMQP协议介绍1、AMQP是什么2、消息代理中间件的职责 1.2 AMQP 0-9-1模型1、AMQP的工作过程2、交换器和交换器类型3、队列队列属性队列名称队列持久化 1.3 几个概念1、绑定2、消费者3、消息确认4、预取消息5、消息属性和有效载荷(消息主体&#x…

HTML5:七天学会基础动画网页7

CSS3高级特效 2D转换方法 移动:translate() 旋转:rotate() 缩放:scale() 倾斜:skew() 属性:transform 作用:对元素进行移动,旋转,缩放,倾斜。 2D移动 设定元素从当前位置移动到给定位置(x,y) 方法 说明 translate(x,y) 2D转换 沿X轴和Y轴移…

概率基础——极大似然估计

概率基础——极大似然估计 引言 极大似然估计(Maximum Likelihood Estimation,简称MLE)是统计学中最常用的参数估计方法之一,它通过最大化样本的似然函数来估计参数值,以使得样本出现的概率最大化。极大似然估计在各…

学习JAVA的第十三天(基础)

目录 API之Arrays 将数组变成字符串 二分查找法查找元素 拷贝数组 填充数组 排序数组 Lambda表达式 集合的进阶 单列集合 体系结构 Collection API之Arrays 操作数组的工具类 将数组变成字符串 //将数组变成字符串char[] arr {a,b,c,d,e};System.out.println(Arra…

Python常用验证码标注和识别(需求分析和实现思路)

目录 一、需求分析 图像验证码识别: 文本验证码识别: 二、实现思路 三、案例与代码 四、总结与展望 在当今的数字时代,验证码(CAPTCHA)作为一种安全机制,广泛应用于网站和应用程序中,以防…

Method Not Allowed (GET): /user/logout/

在使用 DJango 框架使用框架默认的【登出】视图时&#xff0c;发现报错如下&#xff1a; Method Not Allowed (GET): /user/logout/ Method Not Allowed: /user/logout/ 退出部分的代码原先如下&#xff08;登出部分见第6行&#xff09;&#xff1a; <p><a href"…

MySQL 8.0.35 企业版安装和启用TDE插件keyring_encrypted_file

本文主要记录MySQL企业版TDE插件keyring_encrypted_file的安装和使用。 TDE说明 TDE( Transparent Data Encryption,透明数据加密) 指的是无需修改应用就可以实现数据的加解密&#xff0c;在数据写磁盘的时候加密&#xff0c;读的时候自动解密。加密后其他人即使能够访问数据库…

Unity 摄像机的深度切换与摄像机画面投影

摄像机可选&#xff1a;透视、正交 正交类似投影&#xff0c;1比1 透视类似人眼&#xff0c;近大远小 摄像机投影 在项目中新建&#xff1a;渲染器纹理 将新建纹理拖动到相机的目标纹理中 新建一个平面&#xff0c;将新建材质组件放到平面中即可。 相机深度切换 使用代…

93. 通用防重幂等设计

文章目录 一、防重与幂等的区别二、幂等性的应用场景三、幂等性与防重关系四、处理流程 一、防重与幂等的区别 防重与幂等是在 Web 应用程序和分布式系统中重要而又非常常见的问题。 防重 防重是指在多次提交同样的请求过程中&#xff0c;系统会检测和消除重复的数据&#xf…

HTTP有什么缺陷,HTTPS是怎么解决的

缺陷 HTTP是明文的&#xff0c;谁都能看得懂&#xff0c;HTTPS是加了TLS/SSL加密的&#xff0c;这样就不容易被拦截和攻击了。 SSL是TLS的前身&#xff0c;他俩都是加密安全协议。前者大部分浏览器都不支持了&#xff0c;后者现在用的多。 对称加密 通信双方握有加密解密算法…

python自学3

第一节第六章 数据的列表 列表也是支持嵌套的 列表的下标索引 反向也可以 嵌套也可以 列表的常用操作 什么是列表的方法 学习到的第一个方法&#xff0c;index&#xff0c;查询元素在列表中的下标索引值 index查询方法 修改表功能的方法 插入方法 追加元素 单个元素追加 多…

YOLO v9训练自己数据集

原以为RT-DETR可以真的干翻YOLO家族&#xff0c;结果&#xff0c;&#xff01;&#xff01;&#xff01;&#xff01; 究竟能否让卷积神经网络重获新生&#xff1f; 1.数据准备 代码地址&#xff1a;https://github.com/WongKinYiu/yolov9 不能科学上网的评论区留言 数据集…

教育知识与能力保分卷一(中学)

2.在教育学的发展过程中&#xff0c;代表马克思主义的教育学著作是&#xff08;A &#xff09;。 A.凯洛夫的《教育学》 B.赞可夫的《教学与发展》 C.杜威的《民主主义与教育》 D.昆体良的《论演说家的教育》 8.小贺在一次期…

电脑不小心格式化了,怎么恢复?

在这个数字化时代&#xff0c;电脑已经成为我们日常生活和工作中不可或缺的工具。然而&#xff0c;有时我们可能会不小心格式化电脑硬盘&#xff0c;导致重要数据的丢失。那么&#xff0c;电脑不小心格式化了&#xff0c;怎么恢复&#xff1f; 别着急&#xff0c;在本篇攻略中&…

掌握PDF全面指南:Python开发者的高效编程技巧

掌握PDF全面指南&#xff1a;Python开发者的高效编程技巧 简介PDF基础知识PDF的结构常见用途PDF在开发中的挑战 PDF处理库介绍PyPDF2ReportLabPDFMiner辅助库 读取和分析PDF文件使用PyPDF2读取PDF文件提取PDF中的文本和元数据分析PDF结构和内容 编辑和修改PDF文件合并多个PDF文…

如何制作一个分销商城小程序_揭秘分销商城小程序的制作秘籍

打造赚钱神器&#xff01;揭秘分销商城小程序的制作秘籍 在这个数字化高速发展的时代&#xff0c;拥有一个属于自己的分销商城小程序&#xff0c;已成为众多商家和创业者的必备利器。它不仅能够快速搭建起自己的在线销售渠道&#xff0c;还能够利用分销模式&#xff0c;迅速裂…

安全特性 悬垂指针

英文名称 Dangling point&#xff0c;它还有一个兄弟叫 wild point - 野指针。 简单的对Dangling point做一个类比&#xff1a;我换手机号码了&#xff0c;但是没有通知老板&#xff0c;老板通讯录存的是我的旧号码。然后老板打电话有两种可能&#xff1a;打不通电话或者电话打…

Linux常用命令(超详细)

一、基本命令 1.1 关机和重启 关机 shutdown -h now 立刻关机 shutdown -h 5 5分钟后关机 poweroff 立刻关机 重启 shutdown -r now 立刻重启 shutdown -r 5 5分钟后重启 reboot 立刻重启 1.2 帮助命令 –help命令 shutdown --help&#xff1a; ifconfig --help&#xff1a;查看…

AWS ECR(AWS云里面的docker镜像私库)

问题 上一篇文章&#xff0c;在AWS云上面部署了k8s集群&#xff0c;这次接下来&#xff0c;需要在一个docker镜像私库。 步骤 创建docker镜像私库 打开AWS ECR主页&#xff0c;创建一个docker镜像私库&#xff0c;如下图&#xff1a; 设置私有镜像库名称&#xff0c;直接创…