Linux-基础开发工具的使用(yum&vim&gcc&gdb&make/Makefile&git)

文章目录

  • 1.软件包管理工具yum
    • 1.1什么是软件包
    • 1.2查看/查找软件包
    • 1.3安装/卸载软件包
  • 2.编辑器vim
    • 2.1操作模式
    • 2.2模式切换
    • 2.3普通模式下的常用操作指令
  • 3.编译器gcc/g++
    • 3.1编译过程
    • 3.2gcc常用编译选项
  • 4.调试器gdb
    • 4.1调试前提
    • 4.2调试过程
    • 4.3常用调试指令
  • 5.项目自动化构建工具make/Makefile
    • 5.1Makefile的编写规则
    • 5.2Makefile的执行规则
    • 5.3伪对象的声明和使用
    • 5.4最简单的Makefile文本样例
  • 6.项目版本管理工具git
    • 在Linux中使用git上传代码至Github

1.软件包管理工具yum

1.1什么是软件包

要了解软件包管理工具的使用,那么就不得不先对软件包做一个全面的认识:

  • 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序
  • 但是这样太麻烦了, 于是就有大佬把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放在一个服务器上, 通过软件包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装
  • 软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系
  • yum(Yellow dog Updater, Modified)是Linux下非常常用的一种软件包管理器. 主要应用在Fedora,RedHat, Centos等发行版上

其实说白了,Linux中的软件包就相当于是Windows中的软件,又或者就是手机中的app一样。

1.2查看/查找软件包

  • 查看软件包
    使用yum list命令可以列出所有可安装的软件包,linux中软件包数量其实非常之多,这时,我们可以配合使用grep命令来查看我们关注的软件包即可,如:
yum list | grep lrzsz

在这里插入图片描述

  • 查找软件包
    yum search命令用于查找指定软件包,使用时后面直接跟上需要查找的软件包名称即可,如:
yum search lrzsz

Linux-基础开发工具的使用(yum&vim&gcc&gdb&make/Makefile&git)_第1张图片
说明: 上述举例中的rzsz这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件。安装完毕之后可以通过拖拽的方式将文件上传过去,非常实用,是一个比较推荐安装的工具。

1.3安装/卸载软件包

  • 如何安装软件
    在明确我们需要安装的目标软件包时,只需简简单单的一条命令即可完成安装
sudo yum install [软件包名称]

sudo是为当前用户临时提权,因为安装软件包需要root用户的权限,当然,如果使用root用户进行软件包安装,则无需sudo命令。
回车之后可能需要输入密码,之后还会需要手动确认是否安装等选项,只需一路‘y’(yes)即可,直到出现complete则说明安装完毕。

  • 如何卸载软件
    同上,只需简简单单的一条命令即可
sudo yum remove [软件包名称]

2.编辑器vim

接下来介绍Linux中最常用的编辑器-vim,相信喜欢Linux环境的同胞一定都离不开这款编辑器,在熟练使用之后必然都爱不释手!

2.1操作模式

vim是一种命令行编辑器,默认情况无法使用鼠标(但可以配置),所以完成多种操作就需要有多种操作模式。vim总共有多达12种操作模式,但是不要慌,一般来说,我们也没必要去了解所有的操作模式,而只需要能够掌握常用的三种操作模式即可。

  • 普通模式
    主要进行文本的常见操作 --复制、粘贴、剪切/删除、撤销、撤销的恢复、文本对齐、光标的快速移动等。具体操作将在下方2.3进行介绍。
  • 插入模式
    进行文本数据的插入
  • 底行模式
    主要进行文本的保存、退出,数据的匹配、查找、替换等操作。
    常用指令:
    w:保存、q:退出、wq:保存并退出、q!:强制退出(不保存)。

2.2模式切换

  • 普通模式 → 插入模式 : i/a/o/I/A/O
    i --在当前光标所在位置进入插入模式
    a --光标后移一个字符,进入插入模式
    o --在当前光标所在行的下方创建新行,进入插入模式
    I --光标移动到当前行的行首位置,进入插入模式
    A --光标移动到当前行的行尾位置,进入插入模式
    O --在当前光标所在行的上方创建新行,进入插入模式

  • 普通模式 → 底行模式 : “shift + ;”(英文分号)

  • 其他模式 → 普通模式 : Esc
    所有模式都是围绕普通模式来切换的,在任何模式下按Esc都可以一键返回普通模式

2.3普通模式下的常用操作指令

  1. 光标移动
    h/j/k/l --分别向左、下、上、右移动光标
    w/b --按单词向右、向左移动光标
    ctrl+f/b --上/下翻页
    gg/G --光标移动到文本首行/尾行
  2. 文本操作
    yy/nyy --复制,默认复制一行,n表示复制多行
    p/P --粘贴
    dd/ndd 删除,默认删除一行,n表示删除多行
    x/nx --删除字符
    dw/ndw --删除单词
  3. 其他指令
    u --撤销上一次操作
    ctrl+r --撤销的反向操作,即撤销的恢复
    gg=G --全文按照文档格式进行文本对齐

3.编译器gcc/g++

编译器的功能是将高级语言代码解释成为机器指令,使之能够被CPU识别并执行。
在Linux中,不同的语言有不同的编译器,C语言的编译器为gcc,而C++的编译器为g++,以下主要以gcc为例来介绍编译及编译器相关内容。

3.1编译过程

简单来说,编译过程分为预处理、编译、汇编和链接四个阶段。

  • 预处理阶段进行代码的展开,包括引入头文件、宏替换、去注释等操作
  • 编译阶段进行语法检查,如果没有错误则将代码解释为汇编代码
  • 汇编阶段将汇编代码解释成为机器指令
  • 链接则是将所有用到的机器指令打包到一起,生成可执行文件

如果读者有兴趣深入了解程序的编译过程,可以自行查阅相关资料,也可以浏览我之前写过的一篇博客,或许会有所收获,写的不好,还望大家批评指正。下面附上文章链接。

深入理解程序的编译过程+链接

3.2gcc常用编译选项

  • -E --只进行预处理
  • -S --只进行编译(或者到编译完成之后就停下来)
  • -c --只进行汇编(或者到汇编完成之后就停下来)
  • -o --指定要生成的文件名称
  • -g --生成调试信息,即debug版本

如果不使用上述前三个选项,则gcc默认会完成整个编译过程,包括链接,并生成对应的可执行程序,如:
Linux-基础开发工具的使用(yum&vim&gcc&gdb&make/Makefile&git)_第2张图片

4.调试器gdb

调试器gdb用于调试程序,而调试一个程序的运行过程,能够让我们从运行过程中发现程序哪里有问题,从而快速定位和解决问题。

4.1调试前提

  • 程序的发布版本有俩种,分别为debug版本和release版本
  • Linux中通过gcc/g++编译之后的程序,默认是release版本
  • 如果需要使用gdb对程序进行调试,则需要在gcc/g++编译程序时加上 -g 选项,生成具有调试符号信息的debug版本。

4.2调试过程

  1. 调试器加载程序
    gdb ./filename, 如:
gdb ./main //main为编译之后生成的debug版本的可执行程序
  1. 开始调试程序
run //直接运行 
start//开始逐步调试
  1. 使用相关调试指令进行调试
    见下方4.3

4.3常用调试指令

  1. 流程控制
    next/n 下一步 遇到函数直接运行,不会跟踪进入函数,即逐过程的单步调试
    step/s 下一步 遇到函数跟踪进入,即逐语句的单步调试
    list/l filename:line 查看指定文件的指定行附近代码,默认查看当前调试行附近代码
    until/u:line 直接运行到指定行,也可以指定文件,格式同上述list
    continue/n 继续运行,直到断点处停下
  2. 断点操作
    break filename:line 给指定文件的指定行打断点
    break function 给指定函数打断点
    info break 查看断点信息
    watch/w a (a为变量) 给变量打断点,当变量数据发生改变的时候停下
    delete/d 删除断点
  3. 内存操作
    print/p a (a为变量)查看变量数据
    print/p a = 10 设置变量数据
    backtrace 查看程序的调用栈信息,程序一旦奔溃,查看调用栈可以迅速定位崩溃位置,便于发现和解决问题

5.项目自动化构建工具make/Makefile

  1. Makefile 文本文件,记录项目的构建流程及规则
  2. make Makefile的解释程序,对Makefile中的构建流程及规则进行解释,完成项目的构建

5.1Makefile的编写规则

目标对象:依赖对象
制表符/t 指令

5.2Makefile的执行规则

  1. 一旦敲击make指令,则运行make解释程序,在当前目录下寻找Makefile文件
  2. make的执行规则中,要生成目标对象,则必须确保依赖对象已经生成,否则会继续向下寻找依赖对象的生成规则
  3. 打开文件,找到第一个目标对象,与依赖对象进行关系判断,判断目标对象是否需要重新生成
  4. 如果需要重新生成,则向下执行指令,直到生成目标对象,生成第一个目标对象之后就会退出

5.3伪对象的声明和使用

伪对象就是无论如何都要重新生成的对象
声明方法:
.PHONY:目标对象名称
使用方法:
伪对象:
制表符/t 指令

5.4最简单的Makefile文本样例

Linux-基础开发工具的使用(yum&vim&gcc&gdb&make/Makefile&git)_第3张图片

6.项目版本管理工具git

git是目前最常用的版本管理工具,可以用于进行项目的版本控制和管理,主要可以解决以下三个问题:

  1. 代码被喵星人吃掉了
  2. 产品经理反复修改需求, 需要同时维护多个版本代码
  3. 多人协同开发

Github 是 “全球最大的同性社交网站”,通过 git 可以把代码上传到 Github 上给全球的用户分享。

在Linux中使用git上传代码至Github

首先使用git clone克隆远程仓库

git clone https://链接路径

然后使用git三板斧操作

  1. git add ./* 本地提交修改信息
  2. git commit -m “备注信息” 提交本地版本管理
  3. git push 将本次版本提交到远程仓库

你可能感兴趣的:(Linux学习总结,linux)