Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)

文章目录

  • 前言
  • 一、软件包管理工具---yum
    • 1. 查看软件包
    • 2. 安装软件工具
    • 3. 卸载软件工具
    • 4. 关于lrzsz
  • 二、Linux编辑器---vim使用
    • 1. vim的基本概念
    • 2. vim的基本操作
      • 1. 进入vim
      • 2. 普通模式切换至插入模式
      • 3. 插入模式切换至普通模式
      • 4. 普通模式切换至底行模式
      • 5. 退出vim及保存文件
      • 6. 若没有正常退出vim该怎么办?
    • 3. vim普通模式命令集
      • 1. 插入模式
      • 2. 替换模式
      • 3. 光标移动
      • 4. 删除文字
      • 5. 复制
      • 6. 撤销上一次操作
      • 7. 跳至指定的行
    • 4. vim底行模式命令集
      • 1. 列出行号
      • 2. 跳到文本的某一行
      • 3. 查找字符
      • 4. 保存文件
      • 5. 离开vim
  • 三、Linux编译器---gcc/g++使用
    • 1. 编译过程
      • 1. 预处理(进行宏替换)
      • 2. 编译(生成汇编)
      • 3. 汇编(生成机器可识别代码)
      • 4. 链接(生成可执行文件或库文件)
      • 5. Linux中运行程序
    • 2. 函数库
      • 1. 动态链接
      • 2. 静态链接
  • 四、Linux调试器---gdb使用
    • 1. 使用前提
    • 2. 使用
      • 1. 流程控制
      • 2. 内存控制
  • 五、make/Makefile
    • 1. Makefile
    • 2. make
  • 六、使用git命令行
    • 1. 安装git
    • 2. 使用github创建项目
      • 1. 注册账号
      • 2. 创建项目
        • 1). 在github建立远程仓库
        • 2). 将远程仓库克隆到本地
      • 3. 上传代码
        • 1). 提交本次修改记录
        • 2). 提交本地仓库版本管理
        • 3). 将本地版本同步到远程仓库
  • 七、进度条程序


前言

本篇文章主要介绍基础开发工具的使用,yum工具,vim编辑器,gcc/g++编译器,gdb调试工具,makefile编写,进度条程序,最后也会学习git命令行的简单操作,能够将代码上传到github中。


一、软件包管理工具—yum

软件包管理工具:类似于手机上的应用商店,管理当前系统中能够安装的工具以及可以卸载的工具,并实现安装和卸载操作

注意事项:

关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!

可以通过 ping 指令验证

ping www.baidu.com

1. 查看软件包

yum list  查看所有工具

只截取部分做说明:
在这里插入图片描述

  • “x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
  • “el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
  • 最后一列, base 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念.

yum search keyword   根据关键字查找指定工具
在这里插入图片描述

2. 安装软件工具

yum install package_name   安装工具
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第1张图片
注意事项:

  • 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成。
  • yum安装软件只能一个装完了再装另一个。正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错。

3. 卸载软件工具

yum remove package_name   卸载工具
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第2张图片

4. 关于lrzsz

lrzsz: 实现主机与虚拟机之间的联系

rz   windows把文件传给虚拟机
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第3张图片

sz filename  虚拟机给windows传文件
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第4张图片

二、Linux编辑器—vim使用

1. vim的基本概念

vim中默认不能使用鼠标,通过键盘来完成,因此vim分出多种操作模式,不同操作模式下相同按键有不同功能。

vim操作分类:共12种,最常用三种模式:普通、插入、底行

  • 普通模式:完成文本操作,以及光标移动、其他指令操作
  • 插入模式:插入数据
  • 底行模式:更多用于保存退出文件
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第5张图片

2. vim的基本操作

1. 进入vim

vim filename
在这里插入图片描述打开文件后默认处于普通模式(无法输入数据),切换到插入模式才能够输入文字。

2. 普通模式切换至插入模式

  • 输入a/A
  • 输入i/I
  • 输入o/O

3. 插入模式切换至普通模式

  • Esc

任意模式下按Esc键都可以回到普通模式

4. 普通模式切换至底行模式

  • 输入英文:

5. 退出vim及保存文件

先切换至普通模式,然后再切换至底行模式

  • :w 保存当前文件
  • :q   退出
  • :wq 保存并退出
  • :q! 不保存强制退出
    在这里插入图片描述

通常打开了一个不具备写权限的文件,修改文件后会发现,修改不了,也退出不了,这种情况下只能强制退出

6. 若没有正常退出vim该怎么办?

如果vim没有正常退出,就会出现:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第6张图片是因为vim打开一个文件后,通常会创建一个临时文件以.sw*结尾。vim打开文件后,创建临时文件,编辑的时候会修改这个临时文件,只有在保存的时候,才会将修改的信息,写入到源文件中。

正常退出vim的时候会删除临时文件。在文件没有正常关闭退出vim时,这个临时文件不会被删除,每次打开源文件时都会有提示信息。

解决方法:

遇到提示信息,先退出,然后进入交换文件所在路径,删除交换文件。
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第7张图片

3. vim普通模式命令集

1. 插入模式

  • i  在光标位置进行插入
  • I  在目前所在行的第一个非空格符处开始插入
  • o  在光标下一行插入(与回车不同,回车是在光标位置换行,o是在普通模式下进行的操作,新建一行开始插入)
  • O  在光标上一行插入
  • a  从光标所在的下一个字符处开始插入
  • A  从光标所在行的最后一个字符处开始插入

2. 替换模式

  • R  会一直替换光标所在的字符,直到按下Esc停止
  • r  只会替换光标所在的那一个字符一次

3. 光标移动

  • hjkl  控制光标左、下、上、右移一格

  • ctrl+f 向上翻页

  • ctrl+b 向下翻页

  • gg 移动到文本开始

  • G 移动到文本最后

  • $ 移动到光标所在行的行尾

  • ^ 移动到光标所在行的行首

4. 删除文字

  • x 删除光标所在字符
  • dd 删除光标所在行
  • ndd  从光标所在行开始删除n行
  • dw 删除单词

5. 复制

  • yy   复制光标所在行
  • nyy 从光标所在位置开始复制n行
  • p  粘贴
  • np 粘贴n次

6. 撤销上一次操作

  • u   撤销,回到上一个操作。
  • ctrl+r   撤销的恢复
  • gg=G   全文对齐

7. 跳至指定的行

  • nG   表示移动光标至文本的第n行行首

4. vim底行模式命令集

在使用底行模式之前,请记住先按Esc键确定您已经处于普通模式,再按:冒号即可进入底行模式。

1. 列出行号

  • set nu   显示行号
  • set nonu  取消行号

2. 跳到文本的某一行

  • n  n表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了

3. 查找字符

  • /关键字   先按/键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n会往寻找到您要的关键字为止。
  • ?关键字   先按?键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n会往寻找到您要的关键字为止。

4. 保存文件

  • w   在冒号输入字母w,保存文件

5. 离开vim

  • q   退出vim
  • q! 强制退出
  • wq 保存并退出

三、Linux编译器—gcc/g++使用

1. 编译过程

1. 预处理(进行宏替换)

功能: 展开所有代码(引入头文件,宏替换,删除注释等)

-E   只进行预处理

-o   指定输出文件名称

.i文件  已经过预处理的C原始程序

Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第8张图片

2. 编译(生成汇编)

功能: 检查语义语法错误,如果没有错误则将C语言解释成为汇编语言

-S  进行编译处理
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第9张图片

3. 汇编(生成机器可识别代码)

功能: 将汇编代码解释成为二进制的cpu指令

-c  进行汇编处理
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第10张图片

4. 链接(生成可执行文件或库文件)

功能: 将所有的指令打包到一起,不仅是打包我们自己的代码,还有链接库文件中的库函数指令代码,进行组织成为可执行程序。
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第11张图片

5. Linux中运行程序

若要生成可执行程序,不需要必须走完四个步骤(预处理、编译、汇编、链接),也可以直接生成:
在这里插入图片描述

  • 1.相对路径
    在这里插入图片描述
  • 2.绝对路径
    在这里插入图片描述

2. 函数库

函数库,说白了就是一个文件,文件中包含大量的函数实现的二进制代码指令。

库的链接方式:动态链接和静态链接

1. 动态链接

链接动态库生成可执行程序,并没有把库中函数的实现指令直接拿过来写入可执行程序中,而是在可执行程序中记录了库中函数的符号信息表,在运行可执行程序的时候需要去加载动态库到内存中,如果动态库不存在,则程序无法执行。

优点:

生成可执行程序比较小,运行时动态库被加载到内存中,可以多个程序使用同一份内存中库函数代码;

缺点:

运行时需要依赖动态库的存在,不存在则无法运行

2. 静态链接

链接静态库生成可执行程序,直接将库中我们用到的函数的实现代码指令,写入到了可执行程序文件中,程序运行的时候没有什么依赖。

优点:

程序运行没有其他依赖,可以直接运行

缺点:

可执行程序比较大,如果多个程序使用同一个库中的函数,则这些程序同时运行时,则相同的库函数代码在内存中存在多份,代码冗余

gcc编译器中默认的链接方式是动态链接

四、Linux调试器—gdb使用

1. 使用前提

功能: 调试,观察程序的运行过程,通常目的都是为了排查程序的运行错误。

可执行程序的分类:

  • debug–调试版----不对代码进行优化,并且加入程序调试信息;
  • release–发布版----不包含调试信息,并且会对代码进行优化

前提:

  • 可执行程序必须是一个debug版本的程序;
  • gcc/g++ 默认生成release版本,若要生成debug版本,则使用-g选项
    在这里插入图片描述

2. 使用

gdb调试指令
在这里插入图片描述

1. 流程控制

  • run(r) 直接运行程序
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第12张图片
  • start   开始逐步调试
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第13张图片
  • list(l)  查看调试行附近代码

  示例: 查看调试行附近代码
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第14张图片
  示例:查看第九行附近代码Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第15张图片

  • next(n):下一步–逐过程,遇到函数直接运行
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第16张图片

  • step(s)  下一步–逐语句,遇到函数则进入函数继续调试
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第17张图片

  • until  直接运行到指定位置
    在这里插入图片描述

  • continue  继续从当前调试位置运行,直到程序运行结束或者遇到断点

  • break(b)  打断点

   直接在调试行打断点:
在这里插入图片描述  在具体某一行打断点:
在这里插入图片描述

  • info break(i b) 查看断点信息
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第18张图片
  • delete(d) 删除断点----delete num
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第19张图片
  • watch   变量监控断点,当断点发生改变时停下来
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第20张图片
  • quit(q)   退出debug调试
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第21张图片

2. 内存控制

  • print(p) 查看或设置变量内容

  查看:

print var_name(变量名)

如果是函数中的变量,要进入函数中查看。函数中只能查看函数中的变量。

  设置:

print var = val

  • backtrace(bt):查看函数用栈,通常用于检测程序运行时崩溃位置。栈顶位置的函数就是程序发生崩溃的位置。
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第22张图片

五、make/Makefile

1. Makefile

功能: 项目的自动化构建工具

Makefile:是一个文本文件,记录一个项目的构建规则流程

Makefile的编写规则:

目标对象:依赖对象
\t  为了生成目标对象要执行的指令

Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第23张图片
预定义变量的使用

$@:表示目标对象
$^:表示所有依赖对象
$<:表示依赖对象的第一个

在这里插入图片描述
简单的方法获取.c文件,这样就不用一个个输入。
在这里插入图片描述

程序的编译过程:在项目构建中会整体分为两步----编译链接

因为分两步操作,先把每个.c都生成自己的.o,然后再把所有的.o文件链接到一起,一旦一个.c发生改变只需要对这一个.c进行编译生成.o之后。重新链接依次就可以生成可执行文件(其他的.c不需要重新编译)
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第24张图片
伪对象:声明一个目标对象与外部文件无关,表示每次这个对象不管是否最新都要重新生成 .PHONY:
在这里插入图片描述
在这里插入图片描述

2. make

功能: 是一个解释程序,对makefile中记录的构建规则流程逐步解释执行,完成项目的构建

make的解释执行规则:

1.在命令行中敲击make指令,则表示运行make解释程序,程序会在当前目录下找到名称为makefile/Makefile的文件,解释执行其中的项目构建规则

Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第25张图片

2.在规则中,找到要生成的第一个目标对象 (判断目标对象是否已经存在,存在的话是否需要重新生成----根据源码文件的最后一次修改时间对比),然后执行对象生成这一指令

3.make每次在makefile中只会找到第一个目标进行生成,生成之后就会退出(不会去生成第二个对象)

Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第26张图片

4.make在生成目标对象的时候,会先查找依赖对象的生成规则,先生成依赖对象,然后再去生成目标对象

Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第27张图片
扩展:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第28张图片

六、使用git命令行

功能: 项目的版本管理工具,整理归档项目周期的各个阶段,便于项目的管理

1. 安装git

首先要安装git

yum install git

2. 使用github创建项目

1. 注册账号

参照官网提示即可。

2. 创建项目

1). 在github建立远程仓库

  1. 登录成功,点击按钮创建新项目
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第29张图片2.输入项目名称,系统会自动校验,校验完成后,点击确认按钮
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第30张图片3.在创建好的项目页面中复制项目的链接, 以备接下来进行下载。在这里插入图片描述

2). 将远程仓库克隆到本地

创建好一个放置代码的目录,然后进行克隆。

git clone url(上面复制的链接)

在这里插入图片描述克隆之后会产生一个目录。

3. 上传代码

将代码放到刚才下载好的目录中。

1). 提交本次修改记录

git add --all ./  提交目录下所有文件
在这里插入图片描述git add filename  提交个别文件
在这里插入图片描述

2). 提交本地仓库版本管理

git commit -m “本次修改的备注信息”

Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第31张图片

3). 将本地版本同步到远程仓库

git push origin master (master是主分支)

Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第32张图片

七、进度条程序

Linux中一切皆文件,终端显示,显示器设备,在Linux中被当作文件进行操作,也就是说将数据写入显示器设备文件,数据就会被显示在显示器上。

显示器文件在编程中被称之为:标准输出设备(标准输入、标准输出、标准错误)

每次数据写入设备都要进行一次设备操作----IO操作

Linux中的缓冲区:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第33张图片代码示例:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)_第34张图片结果演示:
在这里插入图片描述

你可能感兴趣的:(Linux)