Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用


目录

        • 1.yum —— 软件包管理工具
          • 查看:
          • 安装:
          • 卸载:
        • 2.vim —— 编辑器
        • 3.gcc —— 编译器
          • 3.1编译过程:
          • 3.2 运行可执行文件
          • 3.3 完整过程
        • 4.gdb —— 调试器
          • 4.1 调试器加载程序
          • 4.2 开始调试程序
          • 4.3 常用调试指令
        • 5.make/Makefile(makefile) —— 项目自动化构建工具
          • 5.1 Makefile的编写规则:
          • 5.2 make的执行规则:
          • 5.3 Makefile编写规则进阶

1.yum —— 软件包管理工具 —— 安装其他软件的工具(redhat 系列linux的软件包管理工具)
yum—— linux中默认的管理工具,提供软件包的查看,安装,移除等操作
三板斧操作:
查看:
  • yum list —— 查看所有可安装的软件包
  • yum list installed —— 查看已经安装的软件包
  • yum search —— 搜索指定软件包
    示例:yum search lrzsz
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
  • yum makecache —— 将软件包信息保存到本地
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
安装:
  • yum install —— 安装软件包(安装安装包必须要有管理员权限)
    首先切换为管理员用户:su root
    示例:yum install lrzsz
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
卸载:
  • yum remove —— 卸载软件包(卸载安装包必须要有管理员权限)
    首先切换为管理员用户:su root
    示例:yum remove lrzsz
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
2.vim —— 编辑器 —— 是一个命令行编辑器(写代码),默认无法使用鼠标(可以配置),因此拥有多种操作模式
查看该工具是否已经安装,查看该工具是否有版本信息,如果出现找不到命令,就表示没有
vim --version
Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
文章图片

安装:yum install vim
操作模式:
  • 普通模式:进行文本常见操作 —— 复制、剪切、删除、粘贴、撤销、返回、文本对齐、光标的快速移动
  • 插入模式:文本数据的插入
  • 底行模式:进行文本的保存,退出,数据的匹配,查找,替换等操作
模式切换:
vim filename 打开已有文件,或者创建一个新文件,打开之后默认处于普通模式
  • 普通模式→插入模式:i —— 进入插入模式;a —— 光标后移一个字符,进入插入字符;o —— 在光标所在行下方创建新行,进入插入模式;I,A,O
  • 普通模式→底行模式:使用英文冒号 : 进入底行模式,实现文本的保存和退出操作 :q ——退出、:w —— 保存、:wq —— 保存并退出、:q! —— 强制退出且不保存
  • 其他模式→普通模式 :所有模式都是围绕普通模式切换的,任何模式下按Esc键,都可以返回普通模式
普通模式下的操作指令:
  • 光标移动 : h、j、k、l ——上下左右移动光标,w / b —— 按单词移动光标,ctrl+f / b —— 上下翻页,gg / G —— 文档首行/末行。
  • 文本操作: yy / nyy —— 复制 ;p/P —— 粘贴;dd / ndd —— vim 中没有删除,删除就相当于剪切;x —— 删除单个字符 ;dw —— 删除单词
  • 其他操作:u —— 撤销上一次操作;ctrl+r 撤销的反向操作;gg=G —— 全文按照文档格式进行对齐
注意:所在目录必须具有可写权限
在使用vim打开文件时,每次其实是打开一个临时文件,作为中间交换文件,然后关闭源文件,编辑的操作都是在中间文件中完成的,只有使用正规退出(:wq)的时候,才会将改变的数据写入源文件中,并且删除中间文件,否则中间文件存在的情况下,下次vim打开文件的时候,就会有提示信息(删除这个中间文件后就没有)
3.gcc —— 编译器 —— 将所写的高级语言代码解释成为机器指令集
查看该工具是否已经安装,查看该工具是否有版本信息,如果出现找不到命令,就表示没有
gcc --version
Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
文章图片

安装:yum install gcc gcc-c++
gcc 是c语言的编译器,g++是c++的编译器
作用:c、c++语言是高级语言,机器无法识别这些代码,需要编译器,将高级语言代码解释为机器指令,生成可执行程序文件才能执行
可执行的程序文件:一段功能的机器指令集
gcc编译器,在链接生成可执行程序时,会默认链接标准c库
3.1编译过程:
  • 预处理:展开所有代码(引入头文件,宏替换,删除注释……) ;gcc -E
  • 编译:进行语义语法纠错,没有错误了将代码解释为汇编代码;gcc -S
  • 汇编:将汇编代码解释成为机器指令; gcc -c
  • 链接:将所有用到的机器指令文件打包到一起,生成可执行程序。默认链接方式—— 动态链接(不仅仅是我们自己写的文件,还包括库文件)
  • 链接方式:动态链接-链接动态库,只要库中的函数符号列表,运行依赖库;静态链接-链接静态库,获取库中函数实现。
gcc编译器常见操作选项:
  • -o —— 指定要生成的文件名称(不指定生成的可执行文件默认为a.out)
  • -E —— 只进行预处理
    命令:gcc -E a.c -o a.i
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

  • -S —— 只进行编译
    命令:gcc -S a.i -o a.s
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

  • -c —— 只进行汇编
    命令:gcc -c a.s -o a.o
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

  • gcc —— 链接
    在gcc命令后面紧跟目标文件的名字,就可以将目标文件链接成为可执行文件
    • 命令:gcc a.o (不使用 -o 指定名称,默认生成a.out可执行文件)
      Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
      文章图片
    • 如果指定文件名称:
      Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
      文章图片
    • 通过-o选项也可以将可执行文件输出到其他目录,并不一定非得在当前目录下,例如:
      命令:gcc a.o -o ./Test/main
      Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
      文章图片

      注意: 也可以不用写 ./ ,默认是当前目录。Test 目录必须存在,如果不存在,gcc 命令不会自动创建,而是抛出一个错误。
3.2 运行可执行文件 上面我们生成了可执行程序,在控制台中输入程序的名字就可以,如下所示:
Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
文章图片

如果不写./,Linux 会到系统路径下查找 a.out,而系统路径下显然不存在这个程序,所以会运行失败。
Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
文章图片

3.3 完整过程 Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
文章图片

4.gdb —— 调试器 ——调试程序运行过程
查看该工具是否已经安装,查看该工具是否有版本信息,如果出现找不到命令,就表示没有
gdb --version
安装:yum install gdb
说明:
  • gdb 加载可执行文件,出现报错,报出的是源码的哪一行出的错。因为,调试的可执行程序就是通过源文件生成的。
  • 调试一个程序的运行过程,能够让我们从运行过程中发现程序哪里有问题,可以适当的改变数据达到某种调试目的,并不是所有的程序都可以调试,调试器只能调试具有调试符号信息的程序 —— debug版本的程序
  • 调试一个程序前提:这个程序是一个debug版本程序。gcc生成可执行程序,默认会生成release版本的程序,程序中没有调试符号信息,想要生成debug版本需要加上-g选项
    例如: gcc -g a.c -o main
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
4.1 调试器加载程序
  • gdb ./main —— 直接使用gdb加载程序
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

  • gdb -p 进程id —— 直接对一个正在运行中的程序进行调试,-p用于指定进程id
4.2 开始调试程序
  • run —— 直接运行
    段错误也就是内存访问错误
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

  • start —— 开始逐步调试
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

4.3 常用调试指令 1. 流程控制:
  • next/n —— 下一步,遇到函数直接运行,不会跟踪进入
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
  • step/s —— 下一步,遇到函数则跟踪进入函数
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
  • list/l —— 默认查看调试行附近代码,也可以指定行 list a.c:20
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
  • until —— 直接运行到指定行,也可以指定文件,until a.c:25
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
  • continue/c —— 继续运行,直到断点处停下
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
2. 断点操作:break/b
  • break a.c:9 —— 给指定文件指定行打断点,程序运行到断点就会停下
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
  • break function —— 给函数打断点
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
  • info break 查看断点信息
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
  • watch —— watch a给变量打断点,当变量数据发生改变的时候停下
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
  • delete/d —— 删除断点
3. 内存操作:
  • print/p —— 查看变量数据print a; print a=10设置变量数据
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

  • backtrace —— 查看程序运行调用栈信息,程序一旦崩溃,查看调用栈可以快速定位崩溃位置——栈顶函数(因为当程序崩溃的时候,栈顶函数来不及出栈,因此栈顶函数就是崩溃位置)
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

5.make/Makefile(makefile) —— 项目自动化构建工具 —— 自动化的将某个项目构架成功
Makefile —— 普通的文本文件,用于记录项目的构建规则流程
make —— Makefile解释程序,对Makefile中的构建规则逐行进行解释执行,完成项目的构建
5.1 Makefile的编写规则:
  1. 目标对象:依赖对象
    目标对象 —— 是要生成的可执行程序的名称
    依赖对象 —— 是生成目标对象所需的源码文件
  2. 制表符\t 执行指令 (只能是制表符,也就是tab,不能为空格)
  3. make在解释执行的时候会找到当前所在目录中的Makefile文件,在这个文件中找到第一个目标对象,执行这个目标对象对应的指令
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
5.2 make的执行规则:
  1. —旦在命令行执行make,则运行make解释程序,在当前目录下寻找Makefile文件,如果没有Makefile文件就会停止执行
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

  2. make的执行规则中,要生成目标对象,首先要先保证依赖对象已经生成,则会递归向下寻找依赖对象的生成规则
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

  3. 打开文件,找到第一个目标对象,与依赖对象进行时间关系判断,判断目标对象是否需要重新生成(只生成第一个目标对象就会退出)
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

  4. 若需要生成,则执行指令; (指令不—定非是生成目标对象的指令)
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

5.3 Makefile编写规则进阶 make中的预定义变量:预定义变量通常都是在执行指令中使用
  • $@ —— 表示目标对象
  • $^ —— 表示所有依赖对象
  • $< —— 表示所有依赖对象中第一个依赖对象
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
【Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用】% —— 通配符的使用:匹配识别任意字符串
Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
文章图片

wildcard / patsubst 关键字的使用(patsubst 这个关键字就是一个字符串替换功能,只是获取到文件名称数据)
Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
文章图片

伪对象声明使用:
.PHONY:目标对象名称
伪对象的作用:不管对象是否最新,每次都要重新生成
  • 不声明伪对象使用:
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片
  • 声明伪对象使用:
    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

    Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
    文章图片

    推荐阅读