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 ?查看所有工具
只截取部分做说明:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

  • “x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
  • “el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
  • 最后一列, base 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念.
yum search keyword ? 根据关键字查找指定工具
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

2. 安装软件工具 yum install package_name ? 安装工具
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

注意事项:
  • 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成。
  • yum安装软件只能一个装完了再装另一个。正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错。
3. 卸载软件工具 yum remove package_name ? 卸载工具
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

4. 关于lrzsz lrzsz: 实现主机与虚拟机之间的联系
rz ? windows把文件传给虚拟机
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

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

二、Linux编辑器—vim使用 1. vim的基本概念 vim中默认不能使用鼠标,通过键盘来完成,因此vim分出多种操作模式,不同操作模式下相同按键有不同功能。
vim操作分类:共12种,最常用三种模式:普通、插入、底行
  • 普通模式:完成文本操作,以及光标移动、其他指令操作
  • 插入模式:插入数据
  • 底行模式:更多用于保存退出文件
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
2. vim的基本操作 1. 进入vim
vim filename ?
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片
打开文件后默认处于普通模式(无法输入数据),切换到插入模式才能够输入文字。
2. 普通模式切换至插入模式
  • 输入a/A
  • 输入i/I
  • 输入o/O
3. 插入模式切换至普通模式
  • Esc
任意模式下按Esc键都可以回到普通模式
4. 普通模式切换至底行模式
  • 输入英文:
5. 退出vim及保存文件
先切换至普通模式,然后再切换至底行模式:
  • :w?保存当前文件
  • :q ? 退出
  • :wq?保存并退出
  • :q!?不保存强制退出
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
通常打开了一个不具备写权限的文件,修改文件后会发现,修改不了,也退出不了,这种情况下只能强制退出。
6. 若没有正常退出vim该怎么办?
如果vim没有正常退出,就会出现:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片
是因为vim打开一个文件后,通常会创建一个临时文件以.sw*结尾。vim打开文件后,创建临时文件,编辑的时候会修改这个临时文件,只有在保存的时候,才会将修改的信息,写入到源文件中。
正常退出vim的时候会删除临时文件。在文件没有正常关闭退出vim时,这个临时文件不会被删除,每次打开源文件时都会有提示信息。
解决方法:
遇到提示信息,先退出,然后进入交换文件所在路径,删除交换文件。
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

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~~)
文章图片

2. 编译(生成汇编)
功能: 检查语义语法错误,如果没有错误则将C语言解释成为汇编语言
-S ?进行编译处理
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

3. 汇编(生成机器可识别代码)
功能: 将汇编代码解释成为二进制的cpu指令
-c ?进行汇编处理
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

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

5. Linux中运行程序
若要生成可执行程序,不需要必须走完四个步骤(预处理、编译、汇编、链接),也可以直接生成:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

  • 1.相对路径
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
  • 2.绝对路径
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
2. 函数库 函数库,说白了就是一个文件,文件中包含大量的函数实现的二进制代码指令。
库的链接方式:动态链接和静态链接
1. 动态链接
链接动态库生成可执行程序,并没有把库中函数的实现指令直接拿过来写入可执行程序中,而是在可执行程序中记录了库中函数的符号信息表,在运行可执行程序的时候需要去加载动态库到内存中,如果动态库不存在,则程序无法执行。
优点:
生成可执行程序比较小,运行时动态库被加载到内存中,可以多个程序使用同一份内存中库函数代码;
缺点:
运行时需要依赖动态库的存在,不存在则无法运行
2. 静态链接
链接静态库生成可执行程序,直接将库中我们用到的函数的实现代码指令,写入到了可执行程序文件中,程序运行的时候没有什么依赖。
优点:
程序运行没有其他依赖,可以直接运行
缺点:
可执行程序比较大,如果多个程序使用同一个库中的函数,则这些程序同时运行时,则相同的库函数代码在内存中存在多份,代码冗余
gcc编译器中默认的链接方式是动态链接
四、Linux调试器—gdb使用 1. 使用前提 功能: 调试,观察程序的运行过程,通常目的都是为了排查程序的运行错误。
可执行程序的分类:
  • debug–调试版----不对代码进行优化,并且加入程序调试信息;
  • release–发布版----不包含调试信息,并且会对代码进行优化
前提:
  • 可执行程序必须是一个debug版本的程序;
  • gcc/g++ 默认生成release版本,若要生成debug版本,则使用-g选项
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
2. 使用 gdb调试指令:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

1. 流程控制
  • run(r)?直接运行程序
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
  • start ? 开始逐步调试
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
  • list(l)? 查看调试行附近代码
??示例: 查看调试行附近代码
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

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

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

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

  • until ?直接运行到指定位置
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片

  • continue ?继续从当前调试位置运行,直到程序运行结束或者遇到断点
  • break(b)? 打断点
?? 直接在调试行打断点:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片
??在具体某一行打断点:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

  • info break(i b)?查看断点信息
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
  • delete(d)?删除断点----delete num
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
  • watch ? 变量监控断点,当断点发生改变时停下来
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
  • quit(q) ? 退出debug调试
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
2. 内存控制
  • print(p)?查看或设置变量内容
??查看:
print var_name(变量名)
如果是函数中的变量,要进入函数中查看。函数中只能查看函数中的变量。
??设置:
print var = val
  • backtrace(bt):查看函数用栈,通常用于检测程序运行时崩溃位置。栈顶位置的函数就是程序发生崩溃的位置。
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
五、make/Makefile 1. Makefile 功能: 项目的自动化构建工具
Makefile:是一个文本文件,记录一个项目的构建规则流程
Makefile的编写规则:
目标对象:依赖对象
\t ?为了生成目标对象要执行的指令
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

预定义变量的使用:
$@:表示目标对象
$^:表示所有依赖对象
$<:表示依赖对象的第一个
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

简单的方法获取.c文件,这样就不用一个个输入。
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

程序的编译过程:在项目构建中会整体分为两步----编译与链接
因为分两步操作,先把每个.c都生成自己的.o,然后再把所有的.o文件链接到一起,一旦一个.c发生改变只需要对这一个.c进行编译生成.o之后。重新链接依次就可以生成可执行文件(其他的.c不需要重新编译)
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

伪对象:声明一个目标对象与外部文件无关,表示每次这个对象不管是否最新都要重新生成 .PHONY:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

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

2. make 功能: 是一个解释程序,对makefile中记录的构建规则流程逐步解释执行,完成项目的构建
make的解释执行规则:
1.在命令行中敲击make指令,则表示运行make解释程序,程序会在当前目录下找到名称为makefile/Makefile的文件,解释执行其中的项目构建规则
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

2.在规则中,找到要生成的第一个目标对象 (判断目标对象是否已经存在,存在的话是否需要重新生成----根据源码文件的最后一次修改时间对比),然后执行对象生成这一指令
3.make每次在makefile中只会找到第一个目标进行生成,生成之后就会退出(不会去生成第二个对象)
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

4.make在生成目标对象的时候,会先查找依赖对象的生成规则,先生成依赖对象,然后再去生成目标对象
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

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

六、使用git命令行 功能: 项目的版本管理工具,整理归档项目周期的各个阶段,便于项目的管理
1. 安装git 首先要安装git
yum install git
2. 使用github创建项目 1. 注册账号
参照官网提示即可。
2. 创建项目
1). 在github建立远程仓库
  1. 登录成功,点击按钮创建新项目
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
    2.输入项目名称,系统会自动校验,校验完成后,点击确认按钮
    Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
    3.在创建好的项目页面中复制项目的链接, 以备接下来进行下载。Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
    文章图片
2). 将远程仓库克隆到本地 创建好一个放置代码的目录,然后进行克隆。
git clone url(上面复制的链接)
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片
克隆之后会产生一个目录。
3. 上传代码
将代码放到刚才下载好的目录中。
1). 提交本次修改记录 git add --all ./ ?提交目录下所有文件
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片
git add filename ?提交个别文件
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

2). 提交本地仓库版本管理
git commit -m “本次修改的备注信息”
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

3). 将本地版本同步到远程仓库
git push origin master (master是主分支)
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

七、进度条程序 Linux中一切皆文件,终端显示,显示器设备,在Linux中被当作文件进行操作,也就是说将数据写入显示器设备文件,数据就会被显示在显示器上。
显示器文件在编程中被称之为:标准输出设备(标准输入、标准输出、标准错误)
每次数据写入设备都要进行一次设备操作----IO操作
【Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)】Linux中的缓冲区:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片
代码示例:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片
结果演示:
Linux环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)
文章图片

    推荐阅读