文章目录
- 前言
- 一、软件包管理工具---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.com1. 查看软件包
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会报错。
yum remove package_name
? 卸载工具文章图片
4. 关于lrzsz lrzsz: 实现主机与虚拟机之间的联系
rz
? windows把文件传给虚拟机文章图片
sz filename
?虚拟机给windows传文件文章图片
二、Linux编辑器—vim使用 1. vim的基本概念 vim中默认不能使用鼠标,通过键盘来完成,因此vim分出多种操作模式,不同操作模式下相同按键有不同功能。
vim操作分类:共12种,最常用三种模式:普通、插入、底行
- 普通模式:完成文本操作,以及光标移动、其他指令操作
- 插入模式:插入数据
- 底行模式:更多用于保存退出文件
文章图片
vim filename
?文章图片
打开文件后默认处于普通模式(无法输入数据),切换到插入模式才能够输入文字。
2. 普通模式切换至插入模式
- 输入
a/A
- 输入
i/I
- 输入
o/O
- 按
Esc
键
4. 普通模式切换至底行模式
- 输入英文
:
先切换至普通模式,然后再切换至底行模式:
:w
?保存当前文件:q
? 退出:wq
?保存并退出:q!
?不保存强制退出
文章图片
6. 若没有正常退出vim该怎么办?
如果vim没有正常退出,就会出现:
文章图片
是因为vim打开一个文件后,通常会创建一个临时文件以.sw*结尾。vim打开文件后,创建临时文件,编辑的时候会修改这个临时文件,只有在保存的时候,才会将修改的信息,写入到源文件中。
正常退出vim的时候会删除临时文件。在文件没有正常关闭退出vim时,这个临时文件不会被删除,每次打开源文件时都会有提示信息。
解决方法:
遇到提示信息,先退出,然后进入交换文件所在路径,删除交换文件。
文章图片
3. vim普通模式命令集 1. 插入模式
- 按
i
?在光标位置进行插入 - 按
I
?在目前所在行的第一个非空格符处开始插入 - 按
o
?在光标下一行插入(与回车不同,回车是在光标位置换行,o是在普通模式下进行的操作,新建一行开始插入) - 按
O
?在光标上一行插入 - 按
a
?从光标所在的下一个字符处开始插入 - 按
A
?从光标所在行的最后一个字符处开始插入
- 按
R
? 会一直替换光标所在的字符,直到按下Esc停止 - 按
r
?只会替换光标所在的那一个字符一次
- 按
h
、j
、k
、l
?控制光标左、下、上、右移一格
- 按
ctrl+f
?向上翻页
- 按
ctrl+b
?向下翻页
- 按
gg
?移动到文本开始
- 按
G
?移动到文本最后
- 按
$
?移动到光标所在行的行尾
- 按
^
?移动到光标所在行的行首
- 按
x
?删除光标所在字符 - 按
dd
?删除光标所在行 - 按
ndd
?从光标所在行开始删除n行 - 按
dw
?删除单词
- 按
yy
? 复制光标所在行 - 按
nyy
?从光标所在位置开始复制n行 - 按
p
? 粘贴 - 按
np
?粘贴n次
- 按
u
? 撤销,回到上一个操作。 - 按
ctrl+r
? 撤销的恢复 - 按
gg=G
? 全文对齐
- 按
nG
? 表示移动光标至文本的第n行行首
Esc
键确定您已经处于普通模式,再按:
冒号即可进入底行模式。1. 列出行号
set nu
? 显示行号set nonu
?取消行号
n
?n表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了
/关键字
? 先按/
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n
会往后寻找到您要的关键字为止。?关键字
? 先按?
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n
会往前寻找到您要的关键字为止。
w
? 在冒号输入字母w
,保存文件
q
? 退出vimq!
?强制退出wq
?保存并退出
功能: 展开所有代码(引入头文件,宏替换,删除注释等)
-E
? 只进行预处理-o
? 指定输出文件名称.i
文件? 已经过预处理的C原始程序文章图片
2. 编译(生成汇编)
功能: 检查语义语法错误,如果没有错误则将C语言解释成为汇编语言
-S
?进行编译处理文章图片
3. 汇编(生成机器可识别代码)
功能: 将汇编代码解释成为二进制的cpu指令
-c
?进行汇编处理文章图片
4. 链接(生成可执行文件或库文件)
功能: 将所有的指令打包到一起,不仅是打包我们自己的代码,还有链接库文件中的库函数指令代码,进行组织成为可执行程序。
文章图片
5. Linux中运行程序
若要生成可执行程序,不需要必须走完四个步骤(预处理、编译、汇编、链接),也可以直接生成:
文章图片
- 1.相对路径
文章图片
- 2.绝对路径
文章图片
库的链接方式:动态链接和静态链接
1. 动态链接
链接动态库生成可执行程序,并没有把库中函数的实现指令直接拿过来写入可执行程序中,而是在可执行程序中记录了库中函数的符号信息表,在运行可执行程序的时候需要去加载动态库到内存中,如果动态库不存在,则程序无法执行。
优点:
生成可执行程序比较小,运行时动态库被加载到内存中,可以多个程序使用同一份内存中库函数代码;缺点:
运行时需要依赖动态库的存在,不存在则无法运行2. 静态链接
链接静态库生成可执行程序,直接将库中我们用到的函数的实现代码指令,写入到了可执行程序文件中,程序运行的时候没有什么依赖。
优点:
程序运行没有其他依赖,可以直接运行缺点:
可执行程序比较大,如果多个程序使用同一个库中的函数,则这些程序同时运行时,则相同的库函数代码在内存中存在多份,代码冗余gcc编译器中默认的链接方式是动态链接
四、Linux调试器—gdb使用 1. 使用前提 功能: 调试,观察程序的运行过程,通常目的都是为了排查程序的运行错误。
可执行程序的分类:
- debug–调试版----不对代码进行优化,并且加入程序调试信息;
- release–发布版----不包含调试信息,并且会对代码进行优化
- 可执行程序必须是一个debug版本的程序;
- gcc/g++ 默认生成release版本,若要生成debug版本,则使用
-g
选项
文章图片
文章图片
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调试
文章图片
print
(p)?查看或设置变量内容
print var_name(变量名)如果是函数中的变量,要进入函数中查看。函数中只能查看函数中的变量。
??设置:
print var = val
backtrace
(bt):查看函数用栈,通常用于检测程序运行时崩溃位置。栈顶位置的函数就是程序发生崩溃的位置。
文章图片
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 git2. 使用github创建项目 1. 注册账号
参照官网提示即可。
2. 创建项目
1). 在github建立远程仓库
- 登录成功,点击按钮创建新项目
文章图片
2.输入项目名称,系统会自动校验,校验完成后,点击确认按钮
文章图片
3.在创建好的项目页面中复制项目的链接, 以备接下来进行下载。
文章图片
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环境基础开发工具使用(yum,vim,gcc/g++,gdb,Makefile,git~~)】Linux中的缓冲区:
文章图片
代码示例:
文章图片
结果演示:
文章图片
推荐阅读
- Linux|Linux 常用工具之yum、vim、gcc、gdb、make/Makefile的使用
- Linux|Linux环境基础开发工具使用(yum、vim、gcc/g++、gdb、make、git)
- 服务器部署|服务器部署(保姆级教程)
- linux|linux《yum》《vim》《gcc/g++》《gdb》《Make/makefile》学习
- Java基础与算法|Linux学习(二)---实操篇1远程登录
- Linux|Linux【实操篇】—— 远程登录、远程文件传输、vi和vim工具的使用方法
- Linux系统编程|【Linux】Linux环境基础开发工具使用 —— yum | vim | gcc & g++ | gdb | make & makefile | 进度条 | git
- Linux学习|Linux环境及工具(yum/vim/gcc/g++/gdb/make/Makefile)
- linux|linux qt 自定义控件,编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件...