软件包管理器 yum
yum类似应用商店客户端,有人已经把软件写好放在服务器上了,通过yum找到服务器上的软件下载
软件操作
yum list
可以显示所有可下载软件,我们要找lrzsz软件
yum install
下载
yum remove
卸载
yum源
yum下载软件是通过下载链接下载的,存放下载链接的地方叫yum源。
这个是官方yum源,也就是存放一些比较通用的软件的下载链接
除了官方yum源还有扩展yum源,比如epel,扩展源需要自己下载
更新yum源本质是替换yum源文件
编辑器 vim
作用是文本编写也就是写代码。
多模式
vim是一个多模式编辑器,当你打开vim默认模式是命令模式,所有的输入都是命令而不是文本输入,输入i命令可以切换到插入模式,这时候就可以文本输入了,写完想退出怎么办?先按esc变成命令模式,然后输入:命令进入底行模式,然后输入wq即可保存退出,w是单纯的保存,q是单纯的退出。
命令模式
上下左右定位
gg:光标定位到最开始的行
G:光标定位到最结尾的行
nG:光标定位到第n行
^:光标定位到当前行的开始位置
$:光标定位到当前行的结尾位置
b, w:光标以单词为单位进行左右移动,可跨行
h, j, k, l:左,下,上,右,光标以字符单位移动
操作
(n)yy:复制光标所在行(或从这行开始复制n行)
(n)dd:剪切或删除光标所在行(n行)
(n)x:删除光标所在字符(n个)
(n)p:粘贴n行到光标的下一行
u:撤销
Ctrl r:对撤销进行撤销
~:切换光标位置的大小写
(n)r:对光标字符进行替换或替换多个
R:进入替换模式,对光标内容进行替换
多文件操作
vs:进入底行模式然后vs加文件名可以打开多个文件窗口
Ctrl ww:光标切换到其他窗口
底行模式
:进入底行模式
wq保存退出
!加指令,可以在底行模式调用外部指令
set nu, 显示行号,set nonu, 去掉行号
vim配置
vimrc是配置文件,如果没有的话自己创建,vim启动时会执行里面的配置选项
每个用户的vim配置文件是独立的,不会互相影响,不建议修改root的vim配置
【一键配置】
直接复制到指令行执行
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
编译器 gcc/g++
gcc只能编译C语言,g++可以编译C/C++
编译后会形成一个可执行文件,名字默认为a.out,./a.out运行
编译四步骤
从文本程序到二进制程序需要经过四个步骤
一,预处理:去注释,头文件展开,条件编译,宏替换。
二,编译:把代码转成汇编
三,汇编:把汇编转成二进制
四,链接:将目标文件和库进行连接形成可执行文件
gcc选项
不加任何选项,默认生成并输出到a.out
-o
是指要输出到哪个文件,如果没有就创建
-E
将预处理做完就停下来
-S
将编译做完就停下来
-c
将汇编做完就停下来,生成的.o文件叫可重定位目标二进制文件,简称目标文件
最后一步,链接,将目标文件和库进行连接形成可执行文件,库提供方法的实现,本质是一个文件
-g
选择debug模式,体积会比release大
自动化构建工具 make/Makefile
make是一条指令,Makefile是一个文件,
mycode依赖mycode.c,根据依赖关系完成依赖方法上面的行为,
【形成可执行文件】
查看依赖的文件是否存在,如果不存在,会递归式的根据依赖关系形成目标文件,make会自动推导makefile的依赖关系
【清理文件】
【make】
make指令默认会执行第一个要形成的目标文件,其它的目标文件要在make后面指定名称
多次使用make不会编译,代码有修改才可以编译,这样可以提高编译效率,但这是怎么做到的?
首页,先有源文件才有可执行文件,所以源文件的最后修改时间一定比可执行文件早,那么如果你修改了源文件,则源文件的最后修改时间就会变得比可执行文件晚,通过比较时间来判断是否修改过,从而判断是否需要再次编译。
【ACM时间】
stat:查看时间
Access:最近访问时间
Modify:最近‘文件内容’修改时间
Change:最近‘文件属性'修改时间
由于Access的改变过于频繁会不断修改这个在磁盘中的文件的属性,所以有个计数器当访问到一定次数才修改一次,touch如果跟一个已存在的文件名,那么它会把这个文件的时间全部更新
【伪目标】
make会根据源文件和目标文件的时间新旧判断是否需要对依赖关系进行编译。
如果我不管时间就是要让依赖关系总是编译呢?
答:用 .PHONY: 修饰,被修饰的文件叫伪目标文件,它总是被执行
清理的工作需要总是被执行,一般用来修饰clean
【特殊符号】
$@ 表示冒号左边的内容
$^ 表示冒号右边的内容
在依赖方法前面加@可以取消回显