[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即可。

相关推荐
Lary_Rock1 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
云飞云共享云桌面3 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
励志成为嵌入式工程师3 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
Peter_chq4 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮5 小时前
Linux 使用中的问题
linux·运维
dsywws6 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零6 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
晓理紫6 小时前
使用git lfs向huggingface提交较大的数据或者权重
git
小林熬夜学编程8 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
我不是程序猿儿8 小时前
【GIT】sourceTree的“当前分支“,“合并分支“与“检出分支的区别
git