【Linux学习笔记】----常用工具详细使用(vim gcc gdb makefile git)

1.yum

  1. yum软件包管理工具
    -list 可以下载的软件包列表
    -install/reinstall name安装软件包/覆盖安装
    -remove 卸载软件包

2.vim

  1. 模式转换
    【Linux学习笔记】----常用工具详细使用(vim gcc gdb makefile git)

  2. 底行模式 命令行模式下 shift+ ;
    q 退出
    q!强制退出
    wq 保存退出
    wq!强制保存退出
    : num 跳转到指定行位置
    set num设置行数
    / char 从前向后找 (都可以使用next到下一个位置)
    ? char从后向前找

  3. 命令行模式 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

  1. gcc 编译器
    -g 生成调试信息
    -o 文件输出到文件
    -O n(n=1 2 3 4)编译器优化0 不优化 4优化级别最高。
    -static 静态链接,不依赖库存在,将代码直接加载到程序里,程序运行是快,但是可能会冗余。
    -shared 动态链接,依赖库存在,运行时需要通过链接去库里调相应的模块,稍微慢一点,但是生成文件较小。
  2. 程序编译过程
    预处理----编译—汇编 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 参考博客

  1. 自动化编译,像shell脚本一样,在makefile文件里,
    定义编译规则,通过make实现自动编译,大大提升了效率。
    显示规则:
    所有目标文件和依赖文件都要给出来。
    隐晦规则:
    为了提升效率,因为生成的时候,过程相同,但是命名不同导致大量类似的命令。
    我们用下面的方式替代这个过程。
  2. 目标对象:依赖对象
    [email protected]目标对象
    $^所有依赖对象
    $<第一个依赖对象
    .PHONY:clean 声明clean伪对象
    伪对象是一个标签,所以不一定会生成依赖,我们通过Make clean才能使用。
    【Linux学习笔记】----常用工具详细使用(vim gcc gdb makefile git)
  3. #相当于//写注释

6.git

git项目版本管理工具
git clone url 把远程的仓库克隆到本地
git add filename 把文件添加到本地仓库
git commit -m ./ “日志”
git push 提交到远程仓库
(克隆远程仓库,直接用git push 就可以提交上去 )
git push orign master
git pull 拉取远程库和本地合并