【Linux】工具和软件
目录
软件包管理器 yum
软件操作
yum list
yum install
yum remove
yum源
编辑器 vim
多模式
命令模式
上下左右定位
操作
多文件操作
底行模式
vim配置
编译器 gcc/g++
编译四步骤
gcc选项
-o
-E
-S
-c
编辑
-g
自动化构建工具 make/Makefile
【形成可执行文件】
【清理文件】
【make】
【ACM时间】
【伪目标】
【特殊符号】
版本控制器 git
git clone
git add
git commit -m
git push
git log
git status
.gitigore
调试器 gdb
debug,release
gdb
q(quit)
l(list)
l n
l 0
l 函数名
b(break) 行号
b 函数名
i(info) b
d(delete) 断点编号
r(run)
n(next)
s(step)
p 变量
p &
编辑
display 变量
undisplay 编号
until n
finish
c(continue)
disable 断点编号
enable 断点编号
bt(breaktrace)
i(info) locals
软件包管理器 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
【特殊符号】
$@ 表示冒号左边的内容
$^ 表示冒号右边的内容
在依赖方法前面加@可以取消回显
版本控制器 git
git是具有网络功能的版本控制器,开源的,client和server一体的,
git clone
把远端仓库克隆到本地
git add
把文件放在预存区
git commit -m
提交到本地仓库,并且要写提交日志
git push
提交到远端仓库
git log
查看提交记录
git status
查看是否有文件需要操作
.gitigore
文件内容包含了不想要的文件后缀,提交文件的时候可以过滤对应的文件
调试器 gdb
debug,release
发布软件有两种模式debug模式和release模式。
dubug可以被调式,release不能,因为前者在形成可执行程序的时候有调试信息,后者主要面向用户,不需要调试。
gcc默认编译模式是release,如果要debug发布需要-g。
debug多携带了调试信息,体积也会大一点。
gdb
后面跟文件进入调试
q(quit)
退出
l(list)
查看代码
l n
查看第n行的代码
l 0
空指令回车会执行上一条指令,配合l 0可以查看全部代码
l 函数名
看对应函数
b(break) 行号
在19行打断点
指定文件名的行号
b 函数名
在函数名的位置打断点
指定文件名
i(info) b
查看断点信息
d(delete) 断点编号
根据断点编号删除断点
r(run)
启动当前程序,遇到断点停下来
n(next)
逐过程,不进入函数内部
s(step)
逐语句,进入函数内部
p 变量
查看一个变量
p &
看地址
display 变量
常显示变量
undisplay 编号
去掉对应常显示变量
until n
跳到第n行
finish
当你在一个函数中,finish表示跑完这个函数就停下来
c(continue)
从一个断点到下一个断点
disable 断点编号
关闭断点,让断点不起作用
enable 断点编号
打开断点
bt(breaktrace)
查看调用堆栈
i(info) locals
查看局部变量