【Linux学习笔记】----常用工具详细使用(vim gcc gdb makefile git)
1.yum
- yum软件包管理工具
-list 可以下载的软件包列表
-install/reinstall name安装软件包/覆盖安装
-remove 卸载软件包
2.vim
-
模式转换
-
底行模式 命令行模式下 shift+ ;
q 退出
q!强制退出
wq 保存退出
wq!强制保存退出
: num 跳转到指定行位置
set num设置行数
/ char 从前向后找 (都可以使用next到下一个位置)
? char从后向前找 -
命令行模式 esc 回到命令行模式
(1)光标移动
hjkl左下上右
gg 跳到第一个字符
G 跳到最后一行的行首
“^” 跳转到当前行首
“$” 跳转当前行尾部
num +l (小写L)跳转到当前行的第num个位置
num+G 跳转到num行首
w 跳到下一个单词开头
e 跳到下一个单词结尾
b 跳到上一个单词开头
ctrl+f/b d/u 上/下移动一/半页
(2 )插入
i 当前位置插入
a当前位置的下一个位置插入
o当前位置新开一行,行首插入
(3)删除
ndd 从当前位置开始向后删除n行
nxx从当前位置向后删除n个字符
nX从当前位置向前删除n个字符
(4)复制
yw复制当前位置到本字符结尾
nyw复制当前位置到后的n个字符
nyy复制当前位置开始复制n行
p粘贴
(5)替换
r替换当前位置
R替换多个字符
(6)撤销
u撤销上次操作
ctrl+r撤销的回复
3.gcc
- gcc 编译器
-g 生成调试信息
-o 文件输出到文件
-O n(n=1 2 3 4)编译器优化0 不优化 4优化级别最高。
-static 静态链接,不依赖库存在,将代码直接加载到程序里,程序运行是快,但是可能会冗余。
-shared 动态链接,依赖库存在,运行时需要通过链接去库里调相应的模块,稍微慢一点,但是生成文件较小。 - 程序编译过程
预处理----编译—汇编 E S c 生成 i s o
预处理
去注释,宏替换,条件编译
gcc -E #.c -o #.i
编译
检查语法,生成汇编代码
gcc -S #.i -o #.s
汇编
将汇编代码生成目标文件
gcc -c #.s -o #.o
链接
将目标文件链接起来生成可执行程序
gcc #.o -o #
4.gdb
gdb调试 参考博客
(gdb)help:查看命令帮助,具体命令查询在gdb中输入help + 命令,简写h
(gdb)run:重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件),简写r
(gdb)start:单步执行,运行程序,停在第一执行语句
(gdb)list:查看原代码(list-n,从第n行开始查看代码。list+ 函数名:查看具体函数),简写l
(gdb)set:设置变量的值
(gdb)next:单步调试(逐过程,函数直接执行),简写n
(gdb)step:单步调试(逐语句:跳入自定义函数内部执行),简写s
(gdb)backtrace:查看函数的调用的栈帧和层级关系,简写bt
(gdb)frame:切换函数的栈帧,简写f
(gdb)info:查看函数内部局部变量的数值,简写i
(gdb)finish:结束当前函数,返回到函数调用点
(gdb)continue:继续运行,简写c
(gdb)print:打印值及地址,简写p
(gdb)quit:退出gdb,简写q
(gdb)break+num:在第num行设置断点,简写b
(gdb)info breakpoints:查看当前设置的所有断点
5.makefile
makefile 参考博客
- 自动化编译,像shell脚本一样,在makefile文件里,
定义编译规则,通过make实现自动编译,大大提升了效率。
显示规则:
所有目标文件和依赖文件都要给出来。
隐晦规则:
为了提升效率,因为生成的时候,过程相同,但是命名不同导致大量类似的命令。
我们用下面的方式替代这个过程。 - 目标对象:依赖对象
[email protected]目标对象
$^所有依赖对象
$<第一个依赖对象
.PHONY:clean 声明clean伪对象
伪对象是一个标签,所以不一定会生成依赖,我们通过Make clean才能使用。
- #相当于//写注释
6.git
git项目版本管理工具
git clone url 把远程的仓库克隆到本地
git add filename 把文件添加到本地仓库
git commit -m ./ “日志”
git push 提交到远程仓库
(克隆远程仓库,直接用git push 就可以提交上去 )
git push orign master
git pull 拉取远程库和本地合并