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

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

相关文章:

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

文章目录 一、yum工具1.Linux中安装软件的方法:2.什么是yum?3.yum源更新 二、Linux编辑器--vim1.IDE例子2.vim(1)vim的常用模式及切换模式(2)底层模式常用命令(3)插入模式常用命令(…...

网络通信TCP、UDP详解

目录 IP 和端口 网络传输中的 2 个对象:server 和 client 两种传输方式:TCP/UDP TCP 和 UDP 原理上的区别 为何存在 UDP 协议 TCP/UDP 网络通信大概交互图 IP 和端口 所有的数据传输,都有三个要素 :源、目的、长度。 怎么表…...

Flutter笔记:绘图示例 - 一个简单的(Canvas )时钟应用

Flutter笔记 绘图示例 - 一个简单的(Canvas )时钟应用 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_2855…...

Bard和ChatGPT的一些比较

Bard和ChatGPT的一些比较 2023.11.8版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 选择正确的自动文本生成工具对企业至关重要。本文将详细分析谷歌 Bard 和 ChatGPT 的优缺点,以帮助企业做出明智的选择。无论企业关注的是客…...

centos7安装Nexus(Maven私服)与配置使用教程

之前有位大佬问我,他说有个第三方的Jar包,在idea导出库中使用,现在要部署上线测试,要如何导进去打包。 我说,不用那么麻烦,搞个Nexus私服,将Jar上传上去,然后配置Maven的setting文件…...

Azure 机器学习 - 有关为 Azure 机器学习配置 Kubernetes 群集的参考

目录 受支持的 Kubernetes 版本和区域建议的资源计划ARO 或 OCP 群集的先决条件禁用安全增强型 Linux (SELinux)ARO 和 OCP 的特权设置 收集的日志详细信息Azure 机器学习作业与自定义数据存储连接支持的 Azure 机器学习排斥和容许最佳实践 通过 HTTP 或 HTTPS 将其他入口控制器…...

使用微信小程序控制蓝牙小车(微信小程序端)

目录 使用接口界面效果界面设计界面逻辑设计 使用接口 微信小程序官方开发文档 接口说明wx.openBluetoothAdapter初始化蓝牙模块wx.closeBluetoothAdapter关闭蓝牙模块(调用该方法将断开所有已建立的连接并释放系统资源)wx.startBluetoothDevicesDiscovery开始搜寻附近的蓝牙…...

【react hook】react hook组件中,在forEach中使用async/awati进行异步操作,为什么后面代码没有等待直接同步运行了呢?

这是因为 forEach 方法不会等待 async/await 异步操作的完成。forEach 方法是一种同步的方法,它会在每个迭代内部同步执行一个回调函数。当遇到 await 时,会立即暂停执行,但是 forEach 方法不会等待回调函数中的 await 异步操作完成&#xff…...

高斯过程回归 | GPR高斯过程回归

高斯过程回归(Gaussian Process Regression, GPR)是一种强大的非参数回归方法,它通过假设数据是从一个高斯过程中生成的来预测新的数据点。 高斯过程是一种定义在连续输入空间上的随机过程,其中任何有限集合的观测值都呈多变量高斯分布。 实现GPR的Python代码import numpy …...

[autojs]逍遥模拟器和vscode对接

第一步:启动autojs服务 第二步:去cmd查看ip地址,输入ipconfig 第三步:打开逍遥模拟器中的sutojs-左上角- 连接电脑,然后输入WLAN或者其他ip也行,根据自己电脑实际情况确认 此时vscode显示连接成功。我们写…...

Docker 安装与优化

一、安装Docker 1、关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 02、安装依赖包 yum -y install yum-utils device-mapper-persistent-data lvm2#解释 yum-utils #提供了yum-config-manager工具 device mapper #是linux内核中支持逻辑卷…...

Wix使用velo添加Google ads tag并在form表单提交时向谷歌发送事件

往head里加代码时,不能看谷歌的代码,要看wix的代码,不然必定踩坑 https://support.wix.com/en/article/tracking-google-ads-conversions-using-wix-custom-code 这里的代码才对,因为wix搞了个velo,这个velo很傻x&am…...

Centos配置邮件发送

在CentOS Linux上配置邮件发送 在这个指南中,我们将讨论如何配置CentOS Linux系统以通过外部邮件服务器发送电子邮件,使用自己的邮件账户进行发送。 第一步:开启SMTP授权码 首先,我们以QQ邮箱为例,需要开启SMTP授权…...

Ubuntu系统使用apt-get管理软件工具

记录一下使用Ubuntu系统的apt-get管理软件工具 先查看一下系统的版本,可以看到这里使用的是Ubuntu20.04版本,版本代号focal rootmyw:~# uname -a Linux myw 5.4.0-70-generic #78-Ubuntu SMP Fri Mar 19 13:29:52 UTC 2021 x86_64 x86_64 x86_64 GNU/L…...

带你走进Cflow (三)·控制符号类型分析

目录 ​编辑 1、控制符号类型 1.1 语法类 1.2 符号别名 1.3 GCC 初始化 1、控制符号类型 有人也许注意到了输出中奇怪的现象:函数_exit 丢失了,虽然它在源文件中被printdir 调用了两次。这是因为默认情况下 cflow 忽略所有的一下划线开头的符号…...

FPGA UDP RGMII 千兆以太网(3)ODDR

1 xilinx原语 在 7 系列 FPGA 中实现 RGMII 接口需要借助 5 种原语,分别是:IDDR、ODDR、IDELAYE2、ODELAYE2(A7 中没有)、IDELAYCTRL。其中,IDDR和ODDR分别是输入和输出的双边沿寄存器,位于IOB中。IDELAYE2和ODELAYE2,分别用于控制 IO 口输入和输出延时。同时,IDELAYE2 …...

OSG交互:选中场景模型并高亮显示

1、目的 可以在osg视图中选中指定模型实体,并高亮显示。共分为两种,一种鼠标点选,一种框选。 2、鼠标点选 2.1 功能说明 生成两组对象,一组cow对象可以被选中,另一组robot不能被选中;点击cow对象被选中高亮,点击robot被选中不高亮;点击空白处,弹出“select nothing!…...

农业大棚智能化改造升级与远程视频监管方案,助力智慧农业建设发展

一、需求分析 随着现代化技术的发展,农业大棚的智慧化也成为当前备受关注的智慧农业发展手段。利用先进的信息化手段来对农业大棚进行管理,采集和掌握作物的生长状况、作业监督、生态环境等信息数据,实现精准操作、精细管理,远程…...

P6入门:项目初始化2-项目详情之日期Date

前言 使用项目详细信息查看和编辑有关所选项目的详细信息,在项目创建完成后,初始化项目是一项非常重要的工作,涉及需要设置的内容包括项目名,ID,责任人,日历,预算,资金,分类码等等&…...

【ubuntu20.04】win10安装ubuntu20.04双系统

win10安装ubuntu20.04双系统: 【ubuntu20.04】win10安装ubuntu20.04双系统:https://www.bilibili.com/video/BV11k4y1k7Li/?spm_id_from333.999.0.0&vd_source66a67b8a0b3c4e03915bf8b3a6ff9a74 ubuntu与windows双系统时间同步: windows认为&…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来&#xf…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 ​二、实现思路 总体思路: 用户通过Gradio界面上…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...