[Linux]:环境开发工具

news2024/9/24 11:23:41

img

✨✨ 欢迎大家来到贝蒂大讲堂✨✨

🎈🎈养成好习惯,先赞后看哦~🎈🎈

所属专栏:Linux学习

贝蒂的主页:Betty’s blog

1. 软件包管理器——yum

1.1 yum的概念

Linux系统中,如果想安装软件方法大概有三种:

  1. 下载到程序的源代码,自行进行编译,得到可执行程序。
  2. 获取rpm安装包,通过rpm命令进行安装。(未解决软件的依赖关系)。
  3. 通过yum进行安装软件。

接下来我们重点介绍一下yum安装对应的软件。

**Yum(Yellowdog Updater, Modified)**是一个非常重要的软件包管理工具。

Yum主要用于自动解决软件包的依赖关系,极大地简化了软件的安装、升级和卸载过程。它通过从指定的软件仓库中获取软件包信息,并根据用户的需求进行相应的操作。

1.2 yum的安装与删除

使用Yum可以快速安装新的软件,例如执行 yum install package_name 即可安装指定软件包。同时,它也方便软件的升级,如 yum update 能更新系统中的所有软件包。对于不再需要的软件,使用指令yum remove package_name可以将其卸载。

画板

Yum的软件仓库可以是本地的,也可以是远程的网络仓库。通过配置不同的仓库源,可以获取各种不同的软件包,满足不同用户的需求。

值得一提的是:一个服务器同一时刻只允许一个yum进行安装,不能在同一时刻同时安装多个软件。并且因为yum是从服务器上下载RPM包,所以在下载时必须联网。我们可以通过指令ping判断是否有网。

使用指令yum list可以罗列出可供下载的软件:

这三个列数据分别是软件包的名称软件包的版本号软件包的版本号。我们可以选择一个需要的软件安装。

最后选择y确认安装,即可安装成功。成功之后,我们可以通过对应的sl指令查看对应的效果。

当然删除指令的过程也与安装类似,所以不在赘述。

最后需要注意的是:无论是安装还是删除对应的软件,都需要使用root用户。

2. 编辑器——vim

2.1 vim的概念

Linux系统中,**Vim(Vi IMproved)**是一款极为出色的文本编辑器。它由Vi编辑器发展而来,在功能上有显著提升,且提供了更多扩展性与定制选项。 Vi Vim 虽都是多模式编辑器,但Vim作为Vi 的升级版本,兼容Vi的所有指令,同时还具备一些新特性。例如,Vim 拥有语法加亮功能,使代码阅读更加清晰直观。它不仅能在终端运行,还可以在WindowMacOS等不同操作系统环境下运行,具有很强的通用性。

然后我们可以使用指令vim 文件名使用vim编辑器,如果文件名不存在,系统会自动创建。

2.1 vim的三种模式

Vim主要有三种模式:命令模式插入模式底行模式

  1. 在命令模式下,可通过各种快捷键进行高效的文本编辑操作,如移动光标、删除、复制粘贴等。
  2. 插入模式用于正常输入文本,可通过特定按键进入。
  3. 末行模式则用于执行高级操作,如保存文件、查找替换、设置文件属性等。

画板

首先进入vim默认为命令模式。

输入i或者a或者o可以切换为插入模式,它们之间的区别分别为输入i:在当前光标处进入插入模式。输入a:在当前光标的后一位置进入插入模式。输入o:在当前光标处新起一行进入插入模式。

然后我们可以通过Esc退出插入模式,再按下shift+;:进入底行模式。如果输入wq就能保存退出。

2.3 vim的快捷键

并且vim还提供许多快捷键,方便大家操作。以下分别为命令模式与底行模式下常见的快捷键:

命令模式

功能快捷键
光标上移k
光标下移j
光标左移h
光标右移l
移动到行尾$
移动到行首^
移动到文本开始gg
移动到文本末尾Shift+g
移动到第 n 行行首n+Shift+g
当前光标向下移动 n 行n+Enter
跳到下一个字的开头w
跳到下一个字的结尾e
跳到上一个字的开头b
删除光标所在位置的字符x
删除光标所在位置开始往后的 n 个字符nx
删除光标所在位置的前一个字符X
删除光标所在位置的前 n 个字符nX
删除光标所在行dd
删除光标所在行开始往下的 n 行ndd
复制光标所在行到缓冲区yy
复制光标所在行开始往下的 n 行到缓冲区nyy
将光标所在位置开始到字尾的字符复制到缓冲区yw
将光标所在位置开始往后的 n 个字复制到缓冲区nyw
剪切光标所在行dd
剪切光标所在行开始往下的 n 行ndd
将已复制/剪切的内容在光标的下一行粘贴上p
将已复制/剪切的内容在光标的下一行粘贴 n 次np
撤销u
恢复刚刚的撤销Ctrl+r
完成光标所在位置字符的大小写切换~
完成光标所在位置开始往后的 n 个字符的大小写切换n~
替换光标所在位置的字符r
替换光标所到位置的字符,直到按下 Esc 键为止R
将光标所在位置开始到字尾的字符删除,并进入插入模式cw
将光标所在位置开始往后的 n 个字删除,并进入插入模式cnw
上翻一页Ctrl+b
下翻一页Ctrl+f
上翻半页Ctrl+u
下翻半页Ctrl+d

底行模式

功能快捷键
显示行号set nu
取消行号set nonu
保存文件w
退出 vim(强制退出可在后面加 !qq!
保存退出wq
实现多文件的编辑vs 文件名
光标在多屏幕下进行切换Ctrl+w+w
在不退出 vim 的情况下执行 Linux 指令!+指令

值得一提的是,vim编辑器还可以根据自己的喜好进行配置,这个我们在这里就不在赘述,大家可以在网上搜索相关教程进行配置。

3. 编译器——gcc/g++

在 Linux 系统中,gccg++是两个极为重要的编译器。一般而言我们通过gcc编译C语言,g++编译C++。一般而言它们都将经历预处理,编译,汇编,链接四个阶段,具体过程可以参考——程序生成的核心步骤

gcc/g++的语法都是差不多的,都能通过指令gcc/g++ 选项 文件分别对C语言与C++文件进行编译。

以下是gcc/g++指令的常见选项:

  1. -E 只进行预处理,这个不生成文件,你需要把他重定向到一个输出文件里面(否则将把预处理后的结果打印到屏幕上)。
  2. -S编译到汇编语言,不进行汇编和链接,即只进行预处理和编译。
  3. -c编译到目标代码。
  4. -o将处理结果输出到指定文件,该选项后需紧跟输出文件名。(不指定就为a.out文件)。
  5. -static此选项对生成的文件采用静态链接。
  6. -g生成调试信息(若不携带该选项则默认生成release版本)。
  7. -shared 此选项将尽量使用动态库,生成文件较小。
  8. -w不生成任何警告信息。
  9. Wall生成所有警告信息。
  10. -O0/-O1/-O2/-O3编译器优化选项的四个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高。

在利用完gcc/g++编译完成之后,使用指令./生成的可执行文件即可执行文件。

4. 项目自动化构建工具——make/Makefile

4.1 make/Makefile的概念

Linux系统中,makeMakefile是强大的自动化构建工具。

Makefile是一种文本文件,它定义了一系列的规则来描述项目的构建过程。这些规则指定了哪些文件是项目的源文件,以及如何将这些源文件编译、链接成可执行程序或库。

make工具则是用于读取Makefile并执行其中定义的规则。当你运行make命令时,它会检查源文件和目标文件的时间戳,如果源文件比目标文件新,make就会根据Makefile中的规则重新构建目标文件。

4.2Makefile的构建

  1. 首先在源文件所在目录下创建一个makefileMakefile的文件。

  1. 然后用vim打开makefileMakefile的文件进行编写。

编写语法如下:

target: dependencies

command

target是目标文件名,dependencies是目标文件依赖的文件列表(如果有多个用空格隔开),command是构建目标文件的命令(记得前面加Tab)。

我们把目标文件和他所依赖的文件列表之间的关系称为依赖关系,对应的命令称为依赖方法.

  1. 编写完成之后保存并退出,执行make指令就可以对应的可执行文件。

并且Makefile文件也可以简写为:

  1. $@:表示依赖关系中的目标文件(冒号左侧)。
  2. $^:表示依赖关系中的依赖文件列表(冒号右侧全部)。
  3. $<:表示依赖关系中的第一个依赖文件(冒号右侧第一个)。

4.3 make原理

首先会在当前目录下查找名为Makefilemakefile的文件。

  • 目标确定:如果找到该文件,它会找文件当中的第一个目标文件。例如在上述例子中,会找到myfile这个文件,并把这个文件作为最终的目标文件。
  • 依赖检查:如果myfile文件不存在,或是myfile所依赖的Add.o文件和main.o文件的文件修改时间比myfile文件新,那么它就会执行后面的依赖方法来生成myfile文件。
  • 递归依赖:如果myfile所依赖的Add.o文件不存在,那么make 会在Makefile文件中寻找目标为Add.o文件的依赖关系,如果找到则再根据其依赖方法生成Add.o文件,这是一个类似于堆栈的过程。
  • 编译过程:由于Add.o文件和main.c文件是存在的,于是make会生成Add.o文件和main.o文件,然后再用Add.o文件和main.o文件生成最终的myflie文件。
  • 依赖查找:Make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。
  • 错误处理:在寻找的过程中,如果出现错误,例如最后被依赖的文件找不到,那么make就会直接退出,并报错。

4.4 清理

同样为了方便清理对应的文件,我们也可以在makefileMakefile中定义我们的清理逻辑。

清理逻辑我们一般定义为clean,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行。一般使用指令make clean执行清理。

一般将这种清理我们可以设置为伪目标,用.PHONY修饰,其特性为:总是被执行

4.5 修改时间

前面通过概念我们知道,如果我们重复执行make,系统会通过根据其时间戳判断是否执行。一般而言我们如果并没有对目标文件进行修改或者被.PHONY修饰的话,第二次执行make是不会执行的。

如果想让其多次被执行,我们除了选择用.PHONY修饰外,还可以通过touch指令改变其时间。

5. 调试器——gdb

gdb就是我们一般在Linux下的调试工具。

其中唯一需要注意的是调试必须在debug下进行,而如果不指定gcc/g++生成的文件为release版本。如果要生成debug需要在gcc/g++生成可执行程序时,加上-g选项。

然后我们可以通过指令gdb 调试文件调试目标文件。

以下是关于GDB常用的快捷键:

功能分类功能描述快捷键
调试运行代码(启动调试)run/r
调试逐过程调试next/n
调试逐语句调试step/s
调试跳转至指定行until 行号
调试执行完当前正在调用的函数后停下来(不能是主函数)finish
调试运行到下一个断点处continue/c
调试修改变量的值为 xset var 变量=x
显示显示从第 n 行开始的源代码,每次显示 10 行,若 n 未给出则默认从上次的位置往下显示list/l n
显示显示该函数的源代码list/l 函数名
显示打印变量的值print/p 变量
显示打印变量的地址print/p &变量
显示打印表达式的值,通过表达式可以修改变量的值print/p 表达式
显示将变量加入常显示(每次停下来都显示它的值)display 变量
显示将变量的地址加入常显示display &变量
显示取消指定编号变量的常显示undisplay 编号
显示查看各级函数调用及参数bt
显示查看当前栈帧当中局部变量的值info/i locals
断点在第 n 行设置断点break/b n
断点在某函数体内第一行设置断点break/b 函数名
断点查看已打断点信息info breakpoint/b
断点删除指定编号的断点delete/d 编号
断点禁用指定编号的断点disable 编号
断点启用指定编号的断点enable 编号
退出 GDB退出 GDBquit/q

6. 分布式版本控制系统——git

Linux开发中,Git是一款强大的分布式版本控制系统。它可以高效管理代码的变更历史,方便团队协作开发。支持分支管理、合并操作等,极大地提高了软件开发的效率和可靠性。简单来说git就是一个代码托管平台。下面是使用git的步骤

  1. 第一步:使用指令sudo yum install -y git安装git
  2. 第二步:在gitee上创建一个仓库。

  1. 第三步:将仓库克隆到本地。

首先在Linux中单独创建一个目录管理,然后使用指令git clone 链接将仓库克隆下来。

然后可能需要你输入对应的用户名称与密码。

  1. 第四步:进入相应仓库,将需要上传的代码拷贝到该路径下。

  1. 通过相应的指令上传代码。

首先通过指令git add 文件名将文件添加到暂存区,然后使用指令git commit -m "提交的内容信息或修改信息"将暂存区的文件更改提交到本地版本库,最后使用指令git push再输入gitee的用户名与密码就能将本地版本库中的提交推送到远程仓库。

如果是第一次提交git commit需要进行一个身份验证,你需要分别执行这两条指令git config --global user.email "you@example.com"git config --global user.name "Your Name" 其中you@example.com变为自己的昵称与邮箱,"Your Name"换为你的昵称。

然后我们可以通过指令git log查看相关日志

如果我们想删除远端仓库的文件,也是同样的步骤。比如我们想删除Makefile文件

  1. 首先第一步:执行指令git rm 文件名将指定的文件从工作目录和版本控制中删除。

并且删除之后我们也可以通过执行指令git status查看当前工作目录中的文件状态以及与上次提交之间的差异

  1. 第二步:执行相关指令删除远程仓库的文件。

首先第一步仍是git commit -m "提交的内容信息或修改信息",然后再是git push。就能完全删除Makefile文件。

如果你想直接删除该仓库,首先你需要子在gitee上删除对应仓库,然后再Linux中删除对于的隐藏文件.git即可。

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

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

相关文章

【C++深入学习】日期类函数从无到有实现

零、本文思维导图 一、前期准备 1.1 检查构造的日期是否合法 //Date.cpp bool Date::CheckDate() {if (_month < 1 || _month > 12|| _day < 1 || _day > GetMonthDay(_year, _month)){return false;}else{return true;} }Date::Date(int year, int month, int d…

3.6 排序

在第一趟排序之后&#xff0c;一定能把数据表中最大或最小元素放在其最终位置上的排序算法是&#xff08; &#xff09;。 A. 冒泡排序 B. 直接插入排序 C. 快速排序 D. 归并排序 正确答案是 A。 解析 第i趟冒泡排序是从第1个元素到第n-i1个元素依次比较相邻两个元素的关键字&a…

0、Typescript学习

1、变量声明 let a:number100 2、常量 const b:number200 3、判断变量的类型 //number 表示数值类型&#xff0c;包括整数和浮点数 let a:number100 console.log(typeof a) 4、定义数组 let arr1:number[][1,2,3]console.log(arr1[0]) 5、定义函数 &#xff08;1&…

PVN3D(一)代码框架

在windows上配置pvn3d的环境一直配不成功&#xff0c;主要卡在了与C联合编译上&#xff0c;不知道如何处理了。索性先看看代码&#xff0c;竟然发现与论文中的代码对应上了。希望这一段时间把环境配置好。 1.论文中的网络结构 1.RGB图像特征&#xff0c;通过CNN提取特征。深度…

【前端面试】leetcode指针解法javascript

最大盛水 https://leetcode.cn/problems/container-with-most-water/ var maxArea = function(height) {// 左右指针靠拢let left = 0;let right = height.length-1;let maxArea = 0; while(left<right){// 计算出 当前的容积 与最大容积比较,取出最大的const currentAre…

牛客周赛 Round 58(ABCDF)

目录 A.会赢吗&#xff1f; B.能做到的吧 C.会赢的&#xff01; D.好好好数 F.随机化游戏时间 A.会赢吗&#xff1f; 思路&#xff1a; 签到题&#xff0c;比大小 void solve() {double a,b;cin>>a>>b;if(a>b) cout<<"NO";else cout<&…

前端请求的路径baseURL怎么来的 ?nodejs解决cors问题的一种方法

背景&#xff1a;后端使用node.js搭建&#xff0c;用的是express 前端请求的路径baseURL怎么来的 &#xff1f; 前后端都在同一台电脑上运行&#xff0c;后端的域名就是localhost&#xff0c;如果使用的是http协议&#xff0c;后端监听的端口号为3000&#xff0c;那么前端请求…

pdf怎么去水印?5个实用去水印方法新手必看(保姆级攻略)

pdf怎么去水印&#xff1f;在日常的办公工作生活中&#xff0c;我们常常需要使用PDF文件。pdf格式文件非常流行&#xff0c;因为它兼具稳定性和安全性。但是&#xff0c;有时我们从网上下载的pdf文件会带有水印&#xff0c;这些水印不仅影响了文件的美观&#xff0c;还影响了别…

turbovnc 服务端、客户端安装

turbovnc 可以方便地远程登录带界面的linux系统&#xff0c;比如xbuntu、kali等&#xff1b;远程windows11系统&#xff0c;经过亲身测试体验&#xff0c;感觉还是不如windows自带的rdp服务&#xff08;mstsc命令连接&#xff09;好用。 一、安装客户端 下载最新版本的客户端…

Java:位运算符,移位运算

一 位运算符 1.按位与------ & 运算法则&#xff1a; 2.按位或------ | 运算法则&#xff1a; 3.按位异或------ ^ 运算法则&#xff1a; 4.按位取反------ ~ 运算法则&#xff1a; 如果该位为 0 则转为 1, 如果该位为 1 则转为 0 二 移位运算 1.左移 << 运…

数据结构 双向链表

初始化 创建 遍历以及头插

Ubuntu 24.04 安装 英特尔工具包 Intel® Toolkits

目录 1.采用用户界面 GUI 安装英特尔基本工具包 Intel oneAPI Base Toolkit 1.1 下载离线英特尔基本工具包 1.2 安装英特尔基本工具包 1.3 英特尔基本工具包 Intel oneAPI Base Toolkit 环境设置 2.安装英特尔高性能计算工具包 Intel HPC Toolkit 2.1 下载离线英特尔高性…

学习大数据DAY52 Docker中的Mysql主从配置

Mysql 数据库主从同步 上机练习 1 容器生成命令 压缩包获取镜像 docker image load -i /root/mysql.tar 创建并开启两个镜像&#xff1a; docker run --name mysql1 -d -p 3333:3306 \ -v /opt/mysql1/conf:/etc/mysql/conf.d/ \ -v /opt/mysql1/data:/var/lib/mysql \…

精选整理!市面上7款AI论文生成器一键自动生成论文!

在当今学术研究和写作领域&#xff0c;AI技术的迅猛发展为研究人员提供了极大的便利。特别是AI论文自动生成助手&#xff0c;它们不仅能够提高写作效率&#xff0c;还能帮助生成高质量的论文内容。本文将详细介绍市面上7款超好用的AI论文生成器&#xff0c;并特别推荐千笔-AIPa…

kubernetes中的ParallelizeUntil()框架源码解读与使用

概述 摘要&#xff1a;本文从源码层面解读了kubernetes源码中常用的workqueue.ParallelizeParallelizeUntil()框架的源码实现&#xff0c;并且本文也将举例说明了workqueue.ParallelizeUntil()方法的典型使用场景。 正文 说明&#xff1a;基于 kubernetes v1.18.0 源码分析 …

Scratch教师节:给老师的一封信

小虎鲸Scratch资源站-免费Scratch作品源码,素材,教程分享平台! 【Scratch教师节特别献礼】—— 给老师的一封信&#xff1a;编程之光&#xff0c;照亮梦想之路 在这个金秋送爽、硕果累累的季节里&#xff0c;我们迎来了一个特别而温馨的日子——教师节。在这个充满感激与敬意的…

交叉编译概念

交叉编译概念 目录 交叉编译概念1. 什么是交叉编译2. 交叉编译的作用3. 交叉编译器4. 交叉编译工具链5. 交叉编译的一般步骤6. 交叉编译实例 1. 什么是交叉编译 交叉编译是指在一个平台上编译代码&#xff0c;使其能够在另一个不同的平台上运行的过程。这种编译方式通常用于开…

深入探索JDBC:Java数据库连接技术详解与实战应用

Java Database Connectivity&#xff08;JDBC&#xff09;是Java语言中用于访问关系型数据库的标准接口。它定义了一组API&#xff0c;使得Java程序能够以统一的方式连接、访问和操作不同的关系型数据库。JDBC不仅简化了数据库操作&#xff0c;还提高了Java应用程序的可移植性和…

抢先看:2024云栖大会体验攻略

这是一场「AI」奇妙之旅。 2024云栖大会定档 9月19日&#xff01; 期待与你在 杭州云栖小镇 共度一场为期3天的科技盛会 三日主论坛 400分论坛 与并行话题 4万平米 智能科技展区 免费领取云栖大会门票 怎么看、怎么玩、怎么逛 超长干货攻略奉上&#xff0c;请查收 ⬇️…

将OpenHarmony RK设备散包镜像打包为一个整包

本篇文章教大家使用瑞芯微的Linux_Pack_Firmware工具将rk设备的多个镜像文件打包为一个固件。首先感谢大佬AlgoIdeas开源的打包工具&#xff0c;开源地址&#xff1a;https://gitee.com/openharmony-driver/ril_adapter 接下来进行演示&#xff0c;下面我们使用OpenHarmony 4.…