Linux---(五)三大工具yum、vim、gcc/g++

在这里插入图片描述

文章目录

  • 一、yum工具
    • 1.Linux中安装软件的方法:
    • 2.什么是yum?
    • 3.yum源更新
  • 二、Linux编辑器--vim
    • 1.IDE例子
    • 2.vim
      • (1)vim的常用模式及切换模式
      • (2)底层模式常用命令
      • (3)插入模式常用命令
      • (4)视图模式常用命令
      • (5)补充内容
      • (6)vim的配置
  • 三、Linux编译器-gcc/g++的使用
    • 1.适用于什么语言
    • 2.快速查看
      • (1)命令
      • (2)注意点
    • 3.回忆一下,程序的翻译
      • (1)须知
      • (2)先有编译器还是先有语言?
      • (3)程序的翻译过程

一、yum工具

1.Linux中安装软件的方法:

(1)源代码安装(不推荐):把源代码编译,形成可执行,编译太麻烦
(2)rpm软件包安装(不推荐):安装的本质就是拷贝,把可执行程序拷贝到指定路径下即可(不知道下载哪个软件包,不知道哪个软件包是对的,不知道某个软件是否还依赖其他软件)
(3)yum一键式安装

2.什么是yum?

类似于手机上的软件商店或者应用管家。

🎗️应用商店中的特定的App没有被我安装的时候,在哪里?
在服务器端。
🎗️安装软件的本质是下载和安装
🎗️应用商店实质是一种客户端软件
🎗️在这里插入图片描述
🎗️评判一款操作系统好或不好的标准:
每一款操作系统都匹配上它的社区、官方文档、配套软件,叫做对应的生态。
例如:
某款操作系统社区非常活跃,各种不一样的版本和历史上暴露出来的Bug已全部被修正,这个软件配套的我们所用的监视软件、开发软件、各种库支持的非常好,他的生态非常完整,社区非常活跃,文档非常全面,所以我觉得这个操作系统比较好,更重要的是很多公司都在用。)
🎗️很多大公司在用这款操作系统是它的生态好的表现。为什么呢?
(1)大公司的技术团队总是在筛选
(2)大公司是问题复现的高频场景。所以大公司在用,操作系统的问题很快就会暴露,尽快暴露就能被尽快修复。
(3)Linux操作系统本身是开源的,其社区会吸引一大批使用操作系统的人,有的搞内核,有的做应用开发,一定会有一大批人基于应用开发在Linux中开源一大批对应的开源软件,这些开源软件一定会为Linux操作系统提供软件功能支持。
🎗️当使用应用商店时,他怎么知道到对应的服务器上下载app呢?
因为客户端软件中内置了域名、IP地址这样的概念。
🎗️yum相关的文件中,一定有文件里面保存的是:我要去哪里下软软件。
在这里插入图片描述
🎗️在这里插入图片描述

3.yum源更新

其实就是用包含国内下载链接的仓库文件,替换同类型文件即可。

二、Linux编辑器–vim

1.IDE例子

IDE是指集成开发环境。
比如VS就是集编译、调试、编写、运行、支持多语言为一体,这样的环境可称为IDE(集成开发环境)。

2.vim

🎗️vi /vim 就是一款文本编辑器。
🎗️vim是一款多模式的文本编辑器。
🎗️文本编辑器的核心工作:对文本进行增删查改。

(1)vim的常用模式及切换模式

一共有12种模式:6种基本模式和6种附加模式。
在这里插入图片描述

(2)底层模式常用命令

🎗️:wq 保存并退出
🎗️:w! 立马强制写入
🎗️q! 强制退出

🎗️:set number或者:set nu 可调出行号
🎗️:set nonu 不要行号

🎗️:! 命令(不退出vim运行命令,可以在不退出vim情况下进行查看、编译、运行等动作)
🎗️:/ 要查找的关键字(可进行搜索关键字,按键n可以跳转到下一个搜索该关键字的结果)

(3)插入模式常用命令

移动光标
🎗️英文字母H、J、K、L分别控制光标的左、下、右、上移动一格。
🎗️$(也就是shift+4)移动到光标所在行的结尾
🎗️^(也就是shift+6) 移动到光标所在行的行首
🎗️w 以单词为单位进行向后移动,支持跨行
🎗️b 以单词为单位进行向前移动,支持跨行
🎗️gg 定位到代码第一行
🎗️G(也就是shift+g) 定位到代码最后一行
🎗️n+G 定位到代码的第n行

删除文字
🎗️x 每按一次,删除光标所在位置的一个字符
🎗️nx 删除光标所在位置包括自己在内的后面的n个字符
🎗️X 向前删除光标所在位置的一个字符
🎗️nX 向前删除光标所在位置的n个字符
🎗️dd 删除光标所在行;剪切功能(dd完再p,可完成剪切功能)
🎗️ndd 从光标所在行开始删除n行;剪切功能(ndd完再p,可完成多行剪切功能)

复制
🎗️yw 复制一个单词
🎗️nyw 复制n个字符
🎗️yy 复制一行
🎗️nyy 复制n行(包括当前行)
🎗️p 粘贴内容到当前行之后
🎗️np 批量粘贴,将复制的内容粘贴n次

替换
🎗️r 替换光标所在处的字符
🎗️nr 替换包含光标所在处和它后面的n个字符(之后比如按下x,可以将n个字符全部替换成x)
🎗️R(也就是shift+r)切换到替换模式。从光标所在处,将输入的字符覆盖式替换原有的字符
🎗️~(也就是shift+`) 文本大小写相互转换
🎗️#(也就是shift+3) 查找同名单词(按键n可进行单词跳转)

撤销
🎗️u 对刚刚的操作撤销
🎗️ctrl+r 撤销的恢复(如果对撤销后悔)

(4)视图模式常用命令

批量化注释
🎗️ctrl+v (进入视图模式)—>j、k按键上下选中区域(注意选中区域是光标位置之前的内容)–>shift+i(也就是I)—>输入//(在最左侧)—>esc

批量化删除注释
🎗️ctrl+v(进入视图模式)–>h、j、k、l按键选中区域(删除//时要删除两列,选中时选两列)

(5)补充内容

I.vim本身自己也可以创建文件
🎗️vim一个不存在的文件名,在vim文本编辑器中编辑文件内容或者不编辑,只要在底行模式中输入命令:w(即保存文件的意思),该文件就会被创建

II.创建文件的三种方法
🎗️touch 文件名
🎗️>文件名 (重定向符号创建文件)
🎗️vim 文件名 (:w)

III.裸的vim也支持多文件编辑
🎗️在vim的底行模式中输入**:vs 文件名** 可以以分屏的模式让我们看到两个文件的代码,两侧的代码可同时进行编辑(双屏模式下再输入命令,可分三屏)
🎗️无论你打开所少个文件,光标只有一个!
光标在哪一个区域,表示当前正在编辑哪个文件!
ctrl+ww 光标切换窗口
发现:光标在左边或右边,底行只有一个。
只要光标当前在哪个文件里,那么底行对应相应文件底行。(一切以光标为主!)

IV.vim 文件名 +n
🎗️vim编辑文件时,退出时光标在哪一行,再次进来该文件时光标还在上一次的位置
🎗️vim编辑文件,然后用gcc编译文件,出现报错信息,报错信息中会有出错的行号,想要打开编辑文件时将光标定问到该行,使用命令vim 文件名 +行数(注意这里在历史退出时光标应在第一行,其次行数这里的数值应是报错行号-1)

(6)vim的配置

🎗️基础配置—>初步理解vim配置的原理

🎐在家目录下新建一个配置文件 touch .vimrc
🎐将配置选项保存到配置文件中(比如在. vimrc中保存set nu,关闭退出. vimrc,vim别的文件,可看到里面的内容自动在前面加了行号)
🎐vim在启动的时候,会自动扫描当前用户的家目录下的.vimrc,让.vimrc内部的选项生效
🎐vim配置,其实核心就是向.vimrc里面添加更多的配置选项即可。
🎐网上搜索:vim配置选项表,根据自己的需求进行添加

🎗️直接自动化部署配置
https://gitee.com/HGtz2222/VimForCpp?_from=gitee_search
点击上面的链接在文章中找到安装方法中的安装链接,复制到命令行当中,输入root密码,进行下载,下载之后根据提示重启即可直接自动化部署

三、Linux编译器-gcc/g++的使用

1.适用于什么语言

🎗️C语言用gcc/g++编译都可以
🎗️C++语言只能用g++编译

2.快速查看

(1)命令

命令:gcc code.c
在这里插入图片描述

命令:gcc code.c -o mybin.exe

这句命令指明自定义形成的可执行程序名称为mybin.exe

(2)注意点

🎗️C++文件名有多种写法,有.cpp或者.cc或者.cxx这样的后缀
🎗️细节问题:Linux系统中文件后缀没有意义。但为什么编译gcc code.txt编译不过呢?
因为系统认为后缀无意义,不代表gcc不关心后缀。

3.回忆一下,程序的翻译

(1)须知

计算机只认识二进制,因为对应的磁盘、内存,CPU、寄存器各种各样的设备只认识二进制,构成这些设备的基本的电子元器件只认识二进制。

(2)先有编译器还是先有语言?

🎐早期人们在和计算机交互时,用的就是计算机语言
🎐二进制打孔编程对应的是全部喂给CPU的指令集
🎐编译器也是软件!
🎐事实上,编译器和语言的发展过程是一个自举的过程。
在这里插入图片描述

(3)程序的翻译过程

在这里插入图片描述
🎗️条件编译的意义(了解即可)

有很多软件,都是同一款软件,但是功能却有所差别,有的是收费的,有的是免费的。例如VS、XShell、idea、vmvare等软件,由社区版和专业版。那么问题来了,对于这两个不同版本的源代码需要维护几份?
答案:1份!
因为是软件就会有Bug,如果维护两份的话,有BUG的话两边的代码都需要修改,不好维护。而且两个版本在一定程度上有兼容性,社区版中有的专业版中一定有。同时如果只维护一份,只需要一个开发团队和测试团队。
如何做到只维护一份呢?利用条件编译,对代码进行动态裁剪。这就是条件编译的意义。

🎗️详解链接
链接过程就是把编译形成的.o文件和系统库链接起来形成可执行程序的过程。

✨为什么要用库呢?
有一些基础性工作不需要让程序员每次都要从零开始,需要有一组库文件来把公共方法抽象出来,统一以库的方式去使用,加速我们的开发效率。
✨我们现在所写的所有的代码,都是站在巨人肩膀上,已经有人给我们写好了对应的可以直接使用的函数了。
✨你所说的这批功能函数,在哪里?以什么方式呈现给我呢?
答案:在库的里面。ldd命令可用来查看一个可执行程序所依赖的第三方库的信息(在linux系统中已经提前预装了libc.so.6这样的库,并且已经提前预装了一批头文件)。
我们的代码+头文件+库=我们的可执行程序
(头文件提供方法的声明,库提供方法的实现)
✨头文件和库都是文件。所以,所谓的开发环境安装,一定要做什么工作?怎么理解?
安装下载并拷贝头文件和库文件到开发环境中的特定路径下,一定要能被编译器自己找到!

🎗️详解链接中的库

✨库的命名规则:以lib开头
例如libc.so.6,lib开头代表它是库,so代表库的类别,6代表版本号,这个库的真正名字是去掉前缀lib,去掉后缀.so.6,所以libc.so.6的库名字是C标准库。
✨库的类别:
Linux中,以.so结尾的称为动态库,以.a结尾的称为静态库。
windows中,以.dll结尾的称为动态库,以.lib结尾的称为静态库。
✨动态库vs静态库
动态库:是C/C++或者其他第三方提供的所有方法的集合。被所有程序以链接的方式关联起来。(链接方式指的是库中所有函数都有入口地址)
动态链接:就是把要链接的库中的函数地址拷贝到我们的可执行程序的特定位置。
静态库:是C/C++或者其他第三方提供的所有方法的集合。被所有程序以拷贝的方式,将需要的代码,拷贝到自己的可执行程序中。
静态链接:比如说自己写了一个文件经过编译变成了.o文件,如果在最后一步静态链接时,会把code.o和lic.a当中,源代码中用的方法的实现给你的可执行程序拷贝一份。
✨须知:库里面有很多函数,每个函数经过编译器编译之后形成库,每个函数都有地址。
✨动态链接优缺点vs静态链接优缺点
在这里插入图片描述
✨gcc默认是动态链接的,采用静态链接要在命令后加-static
在这里插入图片描述
✨默认情况下,大家的云服务器上是没有安装C静态库的,只有动态库,如果你要安装:
安装C静态库 sudo yum install glibc-static
安装C++静态库 sudo yum install -y libstdc+±static
✨为什么系统一般不自带静态库,而选择动态库呢?
因为编译器默认的链接方式是动态链接,主要是静态链接的体积太大的缺点难以接受。
✨我们的开发环境,默认都要为我们做什么?
1.下载开发环境include、lib文件
2.设置合理的查找路径(能找到对应的头文件和库)
3.规定好我们所形成的可执行程序的链接方式
(以上三点,当编译器出现问题时,可从这三方面思考)


Linux的三大工具已经为友友们进行详细解析,如果对大家有帮助的话,可以点赞收藏,关注后续的创作内容哦!请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网工内推 | 运维工程师,软考认证优先,全额社保

01 北京中科网威信息技术有限公司 招聘岗位:运维工程师 职责描述: 1 熟悉网络安全标准,等级保护管理制度 2 负责等级保护管理制度的的企业管理要求编写; 3 熟系网络组网和相关安全产品; 4 负责用户需求挖掘、分析和…

大数据-之LibrA数据库系统告警处理(ALM-12036 license文件即将过期)

告警解释 系统每天零点检查一次当前系统中的license文件,如果当前时间距离过期时间不足60天,则license文件即将过期,产生该告警。 当重新导入一个正常license,告警恢复。 说明: 如果当前集群使用节点数小于等于10节…

Python数据容器(字符串)

字符串 1.字符串 字符串也是数据容器的一种,字符串是字符的容器,一个字符串可以存放任意数量的字符。 2.字符串的下标索引 从前向后,下标从0开始从后向前,下标从-1开始 # 通过下标索引获取特定位置的字符 name python print(na…

P1529 [USACO2.4] 回家 Bessie Come Home 题解

文章目录 题目描述输入格式输出格式样例样例输入样例输出 提示完整代码 题目描述 现在是晚餐时间,而母牛们在外面分散的牧场中。 Farmer John 按响了电铃,所以她们开始向谷仓走去。 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数…

半导体高加速应力测试及标准

半导体高加速应力测试及标准 随着电气和电子元件变得越来越密集,现在对零件和材料的高度加速应力测试的需求更大。 高加速应力测试系统(HAST 室)主要设计用于使用设定的施加电压和信号进行偏置测试。 控制功能可选择标准的不饱和控制和湿饱和…

Python MySQL 数据库查询:选择数据、使用筛选条件、防止 SQL 注入

从表格中选择数据 要从MySQL中的表格中选择数据,请使用"SELECT"语句: 示例选择"customers"表格中的所有记录,并显示结果: import mysql.connectormydb mysql.connector.connect(host"localhost"…

【PostgreSql本地备份为dump文件与恢复】使用脚本一键备份为dump文件

环境:windows数据库:postgresql 1.准备脚本 backUpDb.bat 脚本为备份脚本,双击运行,右键可以选择编辑;restoreDb.bat 脚本为恢复脚本,双击运行,右键选择编辑; 1.1 脚本介绍 如上图…

Flink之SQL客户端与DDL操作

SQL客户端与DDL操作 Flink SQLSQL客户端1.启动Flink2.启动Flink的SQL客户端3.HELP命令4.验证连接5.结果显示模式6.执行配置 数据库操作1.创建数据库2.查询数据库3.修改数据库4.删除数据库 表操作1.创建表表列属性表Watermark属性列PRIMARY KEY属性列PARTITIONED BY属性列WITH选…

c: struct sort descending and ascending in windows and Ubuntu

/*** file StudentStructSort.h* author geovindu,Geovin Du,涂聚文 (geovindu163.com)* ide: vscode c11,c17 Ubuntu 22.4* brief 结构体排序示例* date 2023-11-05* version 0.1* copyright geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants**/#ifnd…

matplotlib从起点出发(11)_Tutorial_11_TightLayout

如何使用紧凑的而已来干净利落地将绘图放入图形中。 tight_layout会自动调整子图参数,使子图适合图区域。这是一项实验性功能,在某些情况下可能不起作用。它仅检查刻度标签、轴标签和标题的范围。 tight_layout的替代方法是constrained_layout。 1 简…

10. GPIO中断

10. GPIO中断 回顾stm32中断系统STM32中断向量表中断向量偏移NVIC中断控制器 Cortex_A7 中断系统中断向量表GIC控制器中断IDGIC逻辑分块CP15协处理器c0寄存器c1寄存器c12寄存器c15寄存器 中断使能中断优先级设置优先级数配置 GICC_PMR抢占优先级和子优先级位数设置 GICC_BPR优先…

【C++】异常 智能指针

C异常 & 智能指针 1.C异常1.1.异常的抛出与捕获1.2.异常体系1.3.异常安全与规范1.4.异常优缺点 2.智能指针2.1.RAII2.2.智能指针的使用及原理2.2.1.auto_ptr2.2.2.unique_ptr2.2.3.shared_ptr2.2.4.shared_ptr的循环引用问题 & weak_ptr 2.3.定制删除器 1.C异常 C异常…

UML类图绘制指南

目录 类图简介 什么是类图 类图的作用 应用场景 类图中的元素 类和接口 六大关系 强弱关系 依赖关系: 关联关系: 聚合关系: 组合关系: 实现关系: 继承关系: 画图注意事项 总结 类图的重要…

NIO讲解

一:什么是NIO? 二:NIO三大组件 1. channel channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入…

P1547 [USACO05MAR] Out of Hay S 题解

文章目录 题目描述输入格式输出格式样例样例输入样例输出 完整代码 题目描述 Bessie 计划调查 N N N( 2 ≤ N ≤ 2 000 2 \leq N \leq 2\,000 2≤N≤2000)个农场的干草情况,它从 1 1 1 号农场出发。农场之间总共有 M M M( 1 ≤…

阻塞队列+定时器+常见的锁策略

1)阻塞队列:是一个线程安全的队列,是可以保证线程安全的 1.1)如果当前队列为空,尝试出队列,进入阻塞状态,一直阻塞到队列里面的元素不为空 1.2)如果当前队列满了,尝试入队列,也会产生阻塞,一直阻…

(论文阅读24/100)Visual Tracking with Fully Convolutional Networks

文献阅读笔记(sel - CNN) 简介 题目 Visual Tracking with Fully Convolutional Networks 作者 Lijun Wang, Wanli Ouyang, Xiaogang Wang, and Huchuan Lu 原文链接 http://202.118.75.4/lu/Paper/ICCV2015/iccv15_lijun.pdf 【DeepLearning】…

easyexcel==省市区三级联动

省市区三级联动,不选前面的就没法选后面的 package com.example.demoeasyexcel.jilian2; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; import org.apache.poi.ss.use…

IT 基础设施监控工具

IT 基础架构监控作为一个整体,是关于跟踪网络环境中所有 IT 资产的运行状况和性能,网络管理系统收集有关各种指标的数据,例如可用性、运行状况、性能和利用率,然后,IT 基础架构监控将这些数据转换为有用的统计数据&…

【Python】数据分析案例:世界杯数据可视化 | 文末送书

文章目录 前期数据准备导入数据 分析:世界杯中各队赢得的比赛数分析:先打或后打的比赛获胜次数分析:世界杯中的抛硬币决策分析:2022年T20世界杯的最高得分者分析:世界杯比赛最佳球员奖分析:最适合先击球或追…