Linux第三讲:环境基础开发工具使用
Linux第三讲:环境基础开发工具使用
- 1.Linux软件包管理器yum
- 1.1什么是软件包管理器
- 1.2操作系统生态问题
- 1.3什么是yum源
- 2.vim详解
- 2.1什么是vim
- 2.2vim的多模式讲解
- 2.2.1命令模式的诸多指令
- 2.2.1.1gg和n+shift+g
- 2.2.1.2shift+$和shift+^
- 2.2.1.3上、下、左、右
- 2.2.1.4w和b
- 2.2.1.5复制yy和粘贴p和剪切dd
- 2.2.1.6x -- 命令模式的删除
- 2.2.1.7撤销u和反撤销ctrl + r
- 2.2.1.8shift+~
- 2.2.1.9n+r:小范围的文本替换
- 2.2.1.10shift+r:进入替换模式
- 2.2.1.11aio进入插入模式的区别
- 2.2.1.12保存和退出
- 2.2.2底行模式诸多指令
- 2.2.2.1set nu
- 2.2.2.2/XXX -- 搜索XXX
- 2.2.2.3!command
- 2.2.2.4vs+other:分屏操作
- 2.2.3视图模式指令解析
- 2.2.3.1批量化注释和去注释
- 2.2.3.2将所有的printf修改为print
- 2.2.3.3vim code.c +15
- 2.2.3.4!g和!l
- 2.3vim的配置
- 3.复习程序翻译
- 3.1理解条件编译
- 4. 补充 -- sudo问题
- 5.理论知识科普
- 5.1为什么要编译和汇编,以及编译器自举是什么
- 5.2动静态库和动静态链接 -- 操作部分
- 5.3动静态库和动静态链接 -- 理论部分
- 6.自动化构建 - make/Makefile
- 7.Linux第一个程序:进度条的实现
- 7.1回车和换行
- 7.2行缓冲区
- 7.3进度条的一般实现
- 7.4进度条版本1
- 7.5最终进度条版本
1.Linux软件包管理器yum
1.1什么是软件包管理器
1.2操作系统生态问题
我们要完全理解yum问题,必须要了解操作系统的生态问题:
最后我们看一下yum的操作即可:
1.3什么是yum源
上面我们提到,yum是一个用于安装、更新、删除和管理软件包的命令行工具,yum源是指存储软件包及其依赖关系的服务器位置或者本地目录,yum通过访问这些源来管理软件包
2.vim详解
2.1什么是vim
2.2vim的多模式讲解
所以,我们要先进行命令模式的学习:
2.2.1命令模式的诸多指令
我们先进入底行模式,输入set nu,将行号显式出来
2.2.1.1gg和n+shift+g
2.2.1.2shift+$和shift+^
2.2.1.3上、下、左、右
但是,我们会有疑惑:有上下左右键,为什么要使用这些字符进行上下左右呢?
上面是一个老式的电脑,可以看到,这个电脑没有上下左右键,所以就设计成这样了,秉持着向上兼容的问题,所以上下左右也保存下来了,但是,有的并不支持上下左右进行翻阅,只支持hjkl进行翻阅!
2.2.1.4w和b
2.2.1.5复制yy和粘贴p和剪切dd
剪切可以进行粘贴,也可以进行删除!
2.2.1.6x – 命令模式的删除
2.2.1.7撤销u和反撤销ctrl + r
这个很好理解,就是ctrl+z和ctrl+y
2.2.1.8shift+~
按一次,转换一个字符,一直按着,就是转换一行
2.2.1.9n+r:小范围的文本替换
2.2.1.10shift+r:进入替换模式
假如我们有一行都写错了,那么我们可以进入替换模式进行更改:
2.2.1.11aio进入插入模式的区别
a:进入插入模式,并将光标向后移动一位:
i:进入插入模式
o:进入插入模式,并新起一行:
2.2.1.12保存和退出
w为保存,q为退出,进入底行模式之后,输入wq,表示保存并退出,shift+zz也表示保存并退出
wq!表示强制保存并退出,之后如果对于一些敏感文件,就需要进行强制保存或者修改
2.2.2底行模式诸多指令
2.2.2.1set nu
set nu为设置行号
set nonu为取消设置行号
2.2.2.2/XXX – 搜索XXX
2.2.2.3!command
!后边跟指令,可以直接在底行模式下进行命令的执行:
2.2.2.4vs+other:分屏操作
2.2.3视图模式指令解析
视图模式是我们的最后一个模式了!:
2.2.3.1批量化注释和去注释
批量化注释:
将所有代码全部注释:
批量化去注释:
通过上面,可以进行拓展:批量化去除或替换文本,批量化加;等操作
2.2.3.2将所有的printf修改为print
2.2.3.3vim code.c +15
2.2.3.4!g和!l
感叹号加上命令首元素,可以直接执行最近的命令
2.3vim的配置
在vim上进行代码的编写时比较麻烦的,因为它连一个缩进都没有,所以我们可以对vim进行一个基本的配置:
而对于test配置的vim,因为是在自己的家目录中配置的文件,所以对于其他人,是看不到自己的配置的,所以对于vim的配置是自己配置自己的!
我们自己配置一个:
3.复习程序翻译
code.c中的内容为:
3.1理解条件编译
我们知道条件编译,但是条件编译有什么用呢?:
我们都知道:软件有免费版、校园版、付费版、社区版等等分类,这些不同版本的软件并不是每一个版本都有一份单独的代码,而它们是一份代码!而这里面使用的其实就是条件编译!
4. 补充 – sudo问题
当我们普通用户进行sudo时,不是信任用户,我们现在来改成信任用户:
5.理论知识科普
5.1为什么要编译和汇编,以及编译器自举是什么
5.2动静态库和动静态链接 – 操作部分
对于上面,我们只需要知道:gcc默认形成的可执行程序是动态链接的,而要强制静态链接的方式为:gcc-static,而静态链接与动态链接的最大不同在目前看来是文件的大小不同
5.3动静态库和动静态链接 – 理论部分
6.自动化构建 - make/Makefile
有了上面的基础知识之后,我们下面要做的就是实现更加有通用型的makefile:
7.Linux第一个程序:进度条的实现
7.1回车和换行
我们的回车和换行其实是两个不同的概念,\r表示回车,\n表示的是换行,回车只是将光标移动到这一行最开始的位置,而换行是将光标移动到下一行的位置,只是垂直位置移动,而水平位置不变,我们现在使用的\n其实是将换行和回车进行综合了!
7.2行缓冲区
7.3进度条的一般实现
我们想要实现的进度条为:
而该最一般的进度条实现起来还是非常简单的:
7.4进度条版本1
上面的进度条显然不太行,所以我们要再完善一个进度条:
7.5最终进度条版本
上面的进度条显然不足以应对我们真实的情况,因为上面并没有网速的变化、真实情况下的下载问题,我们最后进行优化:
我们真实的下载网速是可能会变的,我们进行测试:
最后将代码看一下就行了: