本篇文章主要介绍基础开发工具的使用,yum工具,vim编辑器,gcc/g++编译器,gdb调试工具,makefile编写,进度条程序,最后也会学习git命令行的简单操作,能够将代码上传到github中。
软件包管理工具:类似于手机上的应用商店,管理当前系统中能够安装的工具以及可以卸载的工具,并实现安装和卸载操作
注意事项:
关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!
可以通过 ping 指令验证
ping www.baidu.com
yum list
查看所有工具
只截取部分做说明:
yum search keyword
根据关键字查找指定工具
yum install package_name
安装工具
注意事项:
lrzsz: 实现主机与虚拟机之间的联系
vim中默认不能使用鼠标,通过键盘来完成,因此vim分出多种操作模式,不同操作模式下相同按键有不同功能。
vim操作分类:共12种,最常用三种模式:普通、插入、底行
vim filename
打开文件后默认处于普通模式(无法输入数据),切换到插入模式才能够输入文字。
a/A
i/I
o/O
Esc
键任意模式下按Esc键都可以回到普通模式
:
先切换至普通模式,然后再切换至底行模式:
通常打开了一个不具备写权限的文件,修改文件后会发现,修改不了,也退出不了,这种情况下只能强制退出。
如果vim没有正常退出,就会出现:
是因为vim打开一个文件后,通常会创建一个临时文件以.sw*结尾。vim打开文件后,创建临时文件,编辑的时候会修改这个临时文件,只有在保存的时候,才会将修改的信息,写入到源文件中。
正常退出vim的时候会删除临时文件。在文件没有正常关闭退出vim时,这个临时文件不会被删除,每次打开源文件时都会有提示信息。
解决方法:
遇到提示信息,先退出,然后进入交换文件所在路径,删除交换文件。
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
键确定您已经处于普通模式,再按:
冒号即可进入底行模式。
set nu
显示行号set nonu
取消行号n
n表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了/关键字
先按/
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n
会往后寻找到您要的关键字为止。?关键字
先按?
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n
会往前寻找到您要的关键字为止。w
在冒号输入字母w
,保存文件q
退出vimq!
强制退出wq
保存并退出功能: 展开所有代码(引入头文件,宏替换,删除注释等)
-E
只进行预处理
-o
指定输出文件名称
.i
文件 已经过预处理的C原始程序
功能: 检查语义语法错误,如果没有错误则将C语言解释成为汇编语言
功能: 将汇编代码解释成为二进制的cpu指令
功能: 将所有的指令打包到一起,不仅是打包我们自己的代码,还有链接库文件中的库函数指令代码,进行组织成为可执行程序。
若要生成可执行程序,不需要必须走完四个步骤(预处理、编译、汇编、链接),也可以直接生成:
函数库,说白了就是一个文件,文件中包含大量的函数实现的二进制代码指令。
库的链接方式:动态链接和静态链接
链接动态库生成可执行程序,并没有把库中函数的实现指令直接拿过来写入可执行程序中,而是在可执行程序中记录了库中函数的符号信息表,在运行可执行程序的时候需要去加载动态库到内存中,如果动态库不存在,则程序无法执行。
优点:
生成可执行程序比较小,运行时动态库被加载到内存中,可以多个程序使用同一份内存中库函数代码;
缺点:
运行时需要依赖动态库的存在,不存在则无法运行
链接静态库生成可执行程序,直接将库中我们用到的函数的实现代码指令,写入到了可执行程序文件中,程序运行的时候没有什么依赖。
优点:
程序运行没有其他依赖,可以直接运行
缺点:
可执行程序比较大,如果多个程序使用同一个库中的函数,则这些程序同时运行时,则相同的库函数代码在内存中存在多份,代码冗余
gcc编译器中默认的链接方式是动态链接
功能: 调试,观察程序的运行过程,通常目的都是为了排查程序的运行错误。
可执行程序的分类:
前提:
continue
继续从当前调试位置运行,直到程序运行结束或者遇到断点
break
(b) 打断点
print
(p) 查看或设置变量内容查看:
print var_name(变量名)
如果是函数中的变量,要进入函数中查看。函数中只能查看函数中的变量。
设置:
print var = val
功能: 项目的自动化构建工具
Makefile:是一个文本文件,记录一个项目的构建规则流程
Makefile的编写规则:
目标对象:依赖对象
\t 为了生成目标对象要执行的指令
$@:表示目标对象
$^:表示所有依赖对象
$<:表示依赖对象的第一个
程序的编译过程:在项目构建中会整体分为两步----编译与链接
因为分两步操作,先把每个.c都生成自己的.o,然后再把所有的.o文件链接到一起,一旦一个.c发生改变只需要对这一个.c进行编译生成.o之后。重新链接依次就可以生成可执行文件(其他的.c不需要重新编译)
伪对象:声明一个目标对象与外部文件无关,表示每次这个对象不管是否最新都要重新生成 .PHONY:
功能: 是一个解释程序,对makefile中记录的构建规则流程逐步解释执行,完成项目的构建
make的解释执行规则:
1.在命令行中敲击make指令,则表示运行make解释程序,程序会在当前目录下找到名称为makefile/Makefile的文件,解释执行其中的项目构建规则
2.在规则中,找到要生成的第一个目标对象 (判断目标对象是否已经存在,存在的话是否需要重新生成----根据源码文件的最后一次修改时间对比),然后执行对象生成这一指令
3.make每次在makefile中只会找到第一个目标进行生成,生成之后就会退出(不会去生成第二个对象)
4.make在生成目标对象的时候,会先查找依赖对象的生成规则,先生成依赖对象,然后再去生成目标对象
功能: 项目的版本管理工具,整理归档项目周期的各个阶段,便于项目的管理
首先要安装git
yum install git
参照官网提示即可。
创建好一个放置代码的目录,然后进行克隆。
git clone url(上面复制的链接)
将代码放到刚才下载好的目录中。
git add --all ./
提交目录下所有文件
git add filename
提交个别文件
git commit -m “本次修改的备注信息”
git push origin master (master是主分支)
Linux中一切皆文件,终端显示,显示器设备,在Linux中被当作文件进行操作,也就是说将数据写入显示器设备文件,数据就会被显示在显示器上。
显示器文件在编程中被称之为:标准输出设备(标准输入、标准输出、标准错误)
每次数据写入设备都要进行一次设备操作----IO操作