Linux环境基础开发工具使用

发布于:2024-07-09 ⋅ 阅读:(38) ⋅ 点赞:(0)

个人主页:仍有未知等待探索-CSDN博客

专题分栏:Linux

目录

一、yum(软件包管理器)

1、什么是软件包?

2、什么是yum?

3、软件包管理器和软件包之间的关系

4、Linux系统(Centos)的生态

1、Linux中安装方式

2、 如何明确某款软件的软件包放在哪个服务器上

5、yum的相关操作

6、yum本地配置

二、vim(编辑器)

1、vim的基本概念

2、vim操作

1、进入vim

2、切换至插入模式

3、切换至命令模式

4、切换至底行模式

5、退出vim及保存文件

3、命令模式命令集

1、移动光标

2、删除文字

3、复制

4、替换

5、撤销

6、跳转到指定行

4、底行模式命令集

三、make/Makefile

1、怎么写?

2、为什么makefile对最新的可执行程序,默认不想重新形成呢?

3、Makefile怎么知道我的文件需要被编译了

4、换行/回车

 5、缓冲区

四、gcc/g++(编译器)

1、链接

1、是什么?

2、为什么?

3、怎么办?

 五、git

1、安装

2、本地仓库和gitte仓库同步

3、git的提交

4、git的删除

5、git的其他知识

六、gdb(调试)

1、基本操作


一、yum(软件包管理器)

Linux中软件包可能会有依赖关系——yum会帮助我们解决依赖关系的问题。

1、什么是软件包?

可以理解成windows上的安装程序。(在Linux上安装软件,通常上是下载到程序的源代码,然后

进行编译得到可执行程序。为了方便,会将一些软件提前进行编译好,然后做成一个软件包放在服

务器上,通过软件包管理器直接获得这个软件包,直接安装)

2、什么是yum?

yum是一个软件下载管理的客户端。(类似于小米应用商城、华为应用商城...)

3、软件包管理器和软件包之间的关系

就相当于是 软件 和 应用商店 之间的关系。

4、Linux系统(Centos)的生态

1、Linux中安装方式

源代码安装、rpm包安装、yum安装

2、 如何明确某款软件的软件包放在哪个服务器上

我的机器内一定内置了目标服务器的地址链接。

5、yum的相关操作

  1. yum list(罗列出所有的软件)
  2. yum list | grep XXX(罗列出与XXX相关的软件)
  3. yum install [-y] XXX 下载(sudo提权,或者root)
  4. yum remove [-y] XXX删除(sudo提权,或者root)
  5. sudo yum -y install -y epel-release ------ 下载扩展软件源

yum 提供软件源:base,基本软件源,很稳定;epel,扩展软件源

6、yum本地配置

yum会根据/etc/yum.repos.d/该路径下面的配置文件,来构成自己的下载链接(根据os版本、要下载的软件),yum帮助我们下载安装。

一般而言,centos的服务器的下载链接指向的都是国外的centos官网。我们可以通过配置,将下载链接改成国内的镜像源。

二、vim(编辑器)

vim是一款编辑器(多模式)

1、vim的基本概念

vim刚打开的默认模式是命令模式。

  • 命令模式

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

  • 插入模式

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

  • 底行模式

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes
 

2、vim操作

1、进入vim

vim filename

2、切换至插入模式

输入 i

3、切换至命令模式

Esc

4、切换至底行模式

shift + ‘;’ 其实就是 [ :](冒号)

5、退出vim及保存文件

在底行模式下

  • :w(保存当前文件)
  • :wq(存盘并退出vim)
  • :q!(不存盘,强制退出vim)

3、命令模式命令集

1、移动光标

  • 「h、j、k、l」:光标的左下上右移动一格
  • 「gg」:直接移动到文本的开头
  • 「G」:直接移动到文本的结尾
  • 「^」:移动到光标所在行的行首
  • 「$」:移动到光标所在行的行尾
  • 「b」:向前移动一次,以单词为单位
  • 「w」:(小写)向后移动一次,以单词为单位

2、删除文字

  • 「X」:(大写)删除光标所在位置的前一个字符。
  • 「x」:(小写)删除光标所在位置的一个字符。
  • 「n + X」:(大写)删除光标的前n个字符(不包括光标所在位置)
  • 「n + x」:(小写)删除光标的后n个字符(包括光标所在位置)
  • 「dd」:删除光标所在行
  • 「n + dd」:删除光标所在行之后的n行(包括光标所在行)

3、复制

  • 「yy」:复制光标所在行
  • 「n + yy」:复制光标所在行 n 次
  • 「p」:(小写)粘贴到光标所在行的下一行
  • 「n + p」:(小写)粘贴到光标所在行的下一行,连续粘贴 n 次

4、替换

  • 「r」:替换光标所在处的字符
  • 「R」:一直进行字符替换,直到按下Esc结束
  • 「n  + r」:对光标指定位置 ,进行n个字符替换

5、撤销

  • 「u」:撤销
  • 「Ctrl + r」:撤销的恢复

6、跳转到指定行

  • 「n + G」:光标到文本的第n行

4、底行模式命令集

  • 「set nu(nonu)」:列出行号(去掉)

  • 「n」:跳转到第 n 行

  • 「/c」:查找字符 c,如果第一次找的关键字不是您想要的,可以一直按「n」会往后

  • 「w」:保存文件

  • 「q(q!)」:退出vim(强制退出),不保存

  • 「wq(wq!)」:退出vim(强制退出),保存

  • 「Ctrl + w + w」:文件间跳转

  • 「Ctrl + v 」:批量化去注释(先选中、在 d 删除)

三、make/Makefile

Makefile是一个用来自动化编译的工具。在一个大型的工程中,有很多的文件,这时候就需要用到Makefile通过工程的编译规则(那些文件先编译。那些文件后编译等等)来对这些文件进行编译。

make是一个命令

Makefile是一个文件

make 会根据文件中的依赖关系,进行自动推导,帮助我们执行所有相关的依赖方法

1、怎么写?

依赖关系+依赖方法

2、为什么makefile对最新的可执行程序,默认不想重新形成呢?

提高编译的效率。

3、Makefile怎么知道我的文件需要被编译了

对比可执行文件的最新修改时间和源文件的最新修改时间

4、换行/回车

‘\n’ -> 回车 + 换行

‘\r’ -> 回车

 5、缓冲区

程序结束的时候,一般要自动冲刷缓冲区。

什么时候冲刷缓冲区:1.‘\n’ 2、缓冲区满了 3、fflush(stdout)

四、gcc/g++(编译器)

1、链接

1、是什么?

是我们的程序和标准库进行结合的过程。

ldd + 可执行文件:显示动态库。

(标准库文件后缀)

Linux:动态库:.so 静态库: .a

windows:动:.dll 静:.lib

2、为什么?

a。让开发站在巨人的肩膀上

b。提高开发效率

3、怎么办?

Linux:

动态库:.so

静态库: .a

连接时,两种连接方式:动态链接,静态链接。

在编译期间:编译器会告知你目标库(动态库)的地址:动态链接

动态链接共享动态库,但是一旦动态库缺失,所有的动态链接这个库的程序,都无法执行。

在编译期间,把库中的方法,拷贝到我自己的可执行程序中(不在关心任何库):静态链接

关于动态库和静态库的类比例子:

动态库:去网吧上网。(共享的电脑)

静态库:在自己家上网。(私人的电脑)

C动态库,默认提供的,gcc默认形成的可执行程序,默认采用动态链接。

动态库&&动态库的优缺点:

1、不能丢失

2、节省资源

静态库&&静态库的优缺点:

1、一旦形成,和库无关

2、浪费资源

(默认情况下,Linux上,一般静态库都没有安装)

静态链接的应用场景???

  1. 简化部署 :当你需要将应用程序部署到多个不同的环境中,且无法确保这些环境具备所需的所有依赖库时,静态链接可以简化部署过程,因为你只需要分发一个包含所有必需功能的单一可执行文件。
  2. 独立应用 :对于那些需要在没有安装任何额外库的“裸机”
  3. 兼容性保持 :在需要确保长时间稳定运行,且不受系统库更新影响的场景下,静态链接可以保持应用程序的稳定性和一致性。

 五、git

对代码进行版本控制,分支控制等的工具。

1、安装

1、安装git:yum install git

2、本地仓库和gitte仓库同步

git clone +仓库链接

这个仓库链接就是仓库的HTTPS链接。

3、git的提交

1、先将想提交的文件或文件夹添加到仓库中

2、git add .(提交当前目录下的所有文件)或者git add filename/(提交某个文件)。提交到git本地仓库的暂存区。

3、git commit -m "日志"

// -m后面的是日志,不能胡写。提交到git本地仓库。

4、git push 默认要输入用户名和密码(可以配置文件,省略用户名密码。但是不建议)。同步到云端。

4、git的删除

1、git rm filename

2、git add

3、git commit -m “日志”

4、git push

5、git的其他知识

git log:查看日志

.gitignore:忽略某个后缀文件的文件。(在提交到本地仓库暂存区时就会对某个文件进行忽略)最好在仓库里添加这个文件,这个文件可以去网上自己找找。

六、gdb(调试)

debug:编译器形成可执行程序的时候会给可执行程序添加了调试信息。

release:发行版本,不可进行调试。

gcc/g++默认的编译,采用release模式。(gcc是编译C语言,g++是编译C++)

gcc/g++用debug模式编译,多加 -g 选项。

gcc test.c -o test.exe (将test.c进行编译,编译完的信息放在text.exe文件中,release版本

gcc test.c -o test.exe -g(debug版本)

1、基本操作

1、启动gdb:gdb + 有调试信息的可执行程序。

2、退出gdb:quit(可以简写成 q )。

3、查看源代码:list(可以简写成 l )。后面加上 (文件名:行号/函数名) | (行号/函数名),表示从哪行开始查看。(默认显示10行)

4、运行程序:run(简称 r )

5、打断点:(breakpoint)b + 行号。给某一行打断点。

6、查看断点:info b(可以写成 i b)

查看当前战争的局部变量:info i(locals)

7、去掉断点:d + 断点编号。

8、禁用断点:disable + 断点编号。

9、使能断点(把禁用断点打开):enable + 断点编号。

10、逐过程:next/n F10

11、逐语句:step/s F11

12、查看变量/地址:print/p

13、常显示:display 变量名和&(变量)

14、取消常显示:undisplay 编号

15、运行到下一个断点处:continue/c

16、运行结束所在函数:finish

17、跳转到指定行:util

18、动态修改变量的值:set var

19、查看调用栈:bt


网站公告

今日签到

点亮在社区的每一天
去签到