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


前言

本篇文章主要介绍基础开发工具的使用,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   安装工具
在这里插入图片描述
注意事项:

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

3. 卸载软件工具

yum remove package_name   卸载工具
在这里插入图片描述

4. 关于lrzsz

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

rz   windows把文件传给虚拟机
在这里插入图片描述

sz filename  虚拟机给windows传文件
在这里插入图片描述

二、Linux编辑器—vim使用

1. vim的基本概念

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

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

  • 普通模式:完成文本操作,以及光标移动、其他指令操作
  • 插入模式:插入数据
  • 底行模式:更多用于保存退出文件
    在这里插入图片描述

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没有正常退出,就会出现:
在这里插入图片描述是因为vim打开一个文件后,通常会创建一个临时文件以.sw*结尾。vim打开文件后,创建临时文件,编辑的时候会修改这个临时文件,只有在保存的时候,才会将修改的信息,写入到源文件中。

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

解决方法:

遇到提示信息,先退出,然后进入交换文件所在路径,删除交换文件。
在这里插入图片描述

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原始程序

在这里插入图片描述

2. 编译(生成汇编)

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

-S  进行编译处理
在这里插入图片描述

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

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

-c  进行汇编处理
在这里插入图片描述

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

功能: 将所有的指令打包到一起,不仅是打包我们自己的代码,还有链接库文件中的库函数指令代码,进行组织成为可执行程序。
在这里插入图片描述

5. Linux中运行程序

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

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

2. 函数库

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

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

1. 动态链接

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

优点:

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

缺点:

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

2. 静态链接

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

优点:

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

缺点:

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

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

四、Linux调试器—gdb使用

1. 使用前提

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

可执行程序的分类:

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

前提:

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

2. 使用

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

1. 流程控制

  • run(r) 直接运行程序
    在这里插入图片描述
  • start   开始逐步调试
    在这里插入图片描述
  • list(l)  查看调试行附近代码

  示例: 查看调试行附近代码
在这里插入图片描述
  示例:查看第九行附近代码在这里插入图片描述

  • next(n):下一步–逐过程,遇到函数直接运行
    在这里插入图片描述

  • step(s)  下一步–逐语句,遇到函数则进入函数继续调试
    在这里插入图片描述

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

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

  • break(b)  打断点

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

  • info break(i b) 查看断点信息
    在这里插入图片描述
  • delete(d) 删除断点----delete num
    在这里插入图片描述
  • watch   变量监控断点,当断点发生改变时停下来
    在这里插入图片描述
  • quit(q)   退出debug调试
    在这里插入图片描述

2. 内存控制

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

  查看:

print var_name(变量名)

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

  设置:

print var = val

  • backtrace(bt):查看函数用栈,通常用于检测程序运行时崩溃位置。栈顶位置的函数就是程序发生崩溃的位置。
    在这里插入图片描述

五、make/Makefile

1. Makefile

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

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

Makefile的编写规则:

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

在这里插入图片描述
预定义变量的使用

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

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

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

因为分两步操作,先把每个.c都生成自己的.o,然后再把所有的.o文件链接到一起,一旦一个.c发生改变只需要对这一个.c进行编译生成.o之后。重新链接依次就可以生成可执行文件(其他的.c不需要重新编译)
在这里插入图片描述
伪对象:声明一个目标对象与外部文件无关,表示每次这个对象不管是否最新都要重新生成 .PHONY:
在这里插入图片描述
在这里插入图片描述

2. make

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

make的解释执行规则:

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述
扩展:
在这里插入图片描述

六、使用git命令行

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

1. 安装git

首先要安装git

yum install git

2. 使用github创建项目

1. 注册账号

参照官网提示即可。

2. 创建项目

1). 在github建立远程仓库
  1. 登录成功,点击按钮创建新项目
    在这里插入图片描述2.输入项目名称,系统会自动校验,校验完成后,点击确认按钮
    在这里插入图片描述3.在创建好的项目页面中复制项目的链接, 以备接下来进行下载。在这里插入图片描述
2). 将远程仓库克隆到本地

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

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

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

3. 上传代码

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

1). 提交本次修改记录

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

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

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

在这里插入图片描述

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

git push origin master (master是主分支)

在这里插入图片描述

七、进度条程序

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

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

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

Linux中的缓冲区:
在这里插入图片描述代码示例:
在这里插入图片描述结果演示:
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值