[Linux]:环境开发工具

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

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

所属专栏: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
调试 修改变量的值为 x set 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 退出 GDB quit/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即可。

相关推荐
Yana.nice12 小时前
openssl将证书从p7b转换为crt格式
java·linux
AI逐月12 小时前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
小白跃升坊13 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey13 小时前
【Linux】线程同步与互斥
linux·笔记
舰长11513 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
zmjjdank1ng13 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.13 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
VekiSon14 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
无限进步_14 小时前
面试题 02.02. 返回倒数第 k 个节点 - 题解与详细分析
c语言·开发语言·数据结构·git·链表·github·visual studio
2401_8590490814 小时前
git submodule update --init --recursive无法拉取解决
前端·chrome·git