目录
1.linux下软件包管理器yum
在centos 7中有三种安装方式:1.源码安装 2.rpm包安装 3.yum安装
1.1 什么是软件包
- 在linux下安装软件, 一个通常的办法是下载到程序的源代码(源码安装), 并进行编译, 得到可执行程序.
- 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.(rpm安装)
- 软件包和软件包管理器, 就好比 "app" 和 "应用商店" 这样的关系.
- yum(yellow dog updater, modifified)是linux下非常常用的一种包管理器. 主要应用在fedora, redhat, centos等发行版上.(yum安装)
1、不用编译源码
2、不用解决软件的依赖关系
1.2如何安装软件
- 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
- yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错.
yum使用举例
通过这个例子我们知道如果要在linux下安装什么软件,使用yum可以很简单。
1.3 如何卸载软件
仍然使用一条指令,假设我们要删除刚刚删掉的sl软件(切换到root用户)
2. vim使用
2.1 vim的安装和配置
vim的安装:切换到root账户下输入命令即可安装
vim的配置:安装好之后,大家可以复制下面链接输入到命令行,配置vim(自动补齐,高光,自动纠错等)
curl -slf https://gitee.com/hgtz2222/vimforcpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
下载完成后按照提示输入指定命令即可使vim配置生效!
2.2 vim的基本概念
正常/普通/命令模式(normal mode)
插入模式(insert mode)
2.3 vim的基本操作
当我们进入vim后,是处于命令模式,在命令模式中你在键盘输入一些字符是毫无效果的,要切换到插入模式才能输入文字
- 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
- 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
- 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字
3. vim正常模式命令集
3.1 插入模式
- 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
- 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
- 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
这个大家可自行验证
3.2 命令模式下的文本批量化操作
- yy:复制当前行 nyy:复制多行
- p : 粘贴
- dd : 剪切(删除)当前行,ndd
- u : 撤销
- ctrl + r :针对u操作再次进行撤销(恢复刚刚的撤销)
- shift + g :g 光标快速定位到最后一行
- gg :快速将光标定位到第一行
- n + shift + g : 光标快速定位到文本的第 n 行
- shift + 4: $ 光标快速定位到文本行的末尾
- shift + 6 :^ 光标快速定位到文本行的开头
- w ,b :向后,向前在一行以单位为单位移动
- h,j,k,l :光标向左,下,上,右移动
- shift + ` : ~ 大小写快速切换
- r + 替换字母:替换光标所在的字符 支持nr
- shift + r :r替换模式,批量化替换
- x :删除光标所在的字符,支持nx 批量化删除
以上操作大家可自行验证
4. linux编辑器 -gcc/g++使用
4.1 gcc如何完成
我们刚才所写的test.c已经完成了,那我们如何进行编译呢?我们使用gcc 文件名。
输入 ./a.out 执行结果
gcc test.c -o mytest //指定名称
4.2 gcc 翻译过程
在c语言中,我们知道一个程序要被执行要经过4个阶段。分别是预处理,编译,汇编,链接
在vs下,我们无法直接查看每一个阶段所做的工作,我们只知道预处理可能做了宏替换,去注释等,在gcc编译器下,我们可以进行查看。
4.2.1 预处理
- 预处理功能主要包括宏定义,文件包含,条件编译,去注释等。
- 预处理指令是以#号开头的代码行。
- 实例: gcc –e hello.c –o hello.i
- 选项“-e”,该选项的作用是让 gcc 在预处理结束后停止编译过程。
- 选项“-o”是指目标文件,“.i”文件为已经过预处理的c原始程序图像 小部件
首先我们来写一部分代码,在linux下查看一下预处理过程的结果
gcc -e test.c -o test.i
-e :从现在开始进行程序的翻译,当预处理完成时,就停下来
此时我们想要查看预处理的结果 vim打开test.c
当我们进入test,i后 shift + g 直接闪现到最后一行发现 预处理结果确实进行了头文件的展开,宏替换,去注释,条件编译等等
4.2.2 编译(生成汇编)
gcc -s test.i -o test.s
-s:从现在开始进行程序的翻译,当我们编译完成后就停下来
我们进入test.s发现代码行数已经变得非常少了,其实这已经变成了x86环境下的汇编指令
4.2.3 汇编
gcc -c test.s -o test.o
-c :从现在开始进行程序的翻译,当我们汇编完成后就停下来
此时我们进入test.o发现已经变成了二进制文件
4.2.4 链接
gcc test.o -o test
4.3 函数库
- 我们的c程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而 没有定义函数的实现,那么,是在哪里实“printf”函数的呢?
- 最后的答案是:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到 系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用
4.3.1 函数库的分类
函数库一般分为静态库和动态库两种
静态库:
补充:vim下批量化注释和去注释
注释:
小写,ctrl + v ,h j k l 选中区域, 切换成大写 ,输入 i (艾) , // , 按esc
去注释:
小写,ctrl + v ,h j k l 选中区域(注释区域) ,按d
发表评论