<<Linux基础环境常用工具—yum、vim、gcc/g++、gdb、git等>>

Linux基础环境常用工具—yum、vim、gcc/g++、gdb、git等。

    • 1.软件包管理器: yum
    • 2.编辑器:vim
    • 3.编译器:gcc/g++
    • 4.调试器:gdb
    • 5.项目自动化构建工具:make/Makefile
    • 6.项目的版本管理工具:git
    • 7.小结

常用的软件包管理工具有:编辑器、编译器、调试器、项目构建工具等。


1.软件包管理器: yum

yum–软件包管理器,即类似于手机上的应用商店
例如:yum list :查看所有工具
yum search keyword:按照keyword关键字查找软件包
yum install package_name:安装指定的软件工具
yum remove package_name:卸载已经安装的软件工具
注意:安装软件时由于需要向系统目录中写入内容,一般需要sudo或者切换到root账户下完成,例如:
sudo yum install lrzsz
sudo yum remove git

2.编辑器:vim

注意:vim下默认不能使用鼠标,所有操作只能通过键盘完成,因此为了完成各种各样的操作,vim分为多种操作模式,不同的操作模式下,相同的按键有不同的功能。
vim操作模式分类:一共有12种,最常用的是3种:普通模式、插入模式、底行模式。

1.普通模式下操作
特别注意:在刚进入vim后,是处于普通模式
复制: yy/nyy-复制光标所在行.
粘贴:p/np:粘贴到光标所在位置
剪切删除:dd/ndd:删除行
x-删除光标所在字符,dw-删除单词
撤销:u,反向撤销:ctrl+r
hjkl:光标左下上右移动,
ctrl+f/b:上下翻页,
gg/G:光标移动到文档的首行或末行.
gg=G:全文对齐,自动缩进
<<Linux基础环境常用工具—yum、vim、gcc/g++、gdb、git等>>_第1张图片

2.插入模式:只有在此模式下才能进行数据输入,按[ESC]可回到普通模式
<<Linux基础环境常用工具—yum、vim、gcc/g++、gdb、git等>>_第2张图片

3.底行模式:保存或退出文件,也可以进行文件替换,找字符串,列出行号等,按shift+:即可进入该模式下。
<<Linux基础环境常用工具—yum、vim、gcc/g++、gdb、git等>>_第3张图片

各模式间的切换:
普通模式——>插入模式:输入a、i、o都行
插入模式——>普通模式:按[ESC]
普通模式——>底行模式:按 ,即可进入底行模式,在此模式下按w保存,按q不保存退出,按wq保存并退出,按q!不保存强制退出。

3.编译器:gcc/g++

所用的c、c++语言都是高级语言,不是cpu指令,编译器目的就是将上层高级语言代码解释成对应平台的cpu指令,能够被cpu识别并执行。
gcc:c语言编译器
g++:c++语言编译器
编译过程分以下四个阶段
1.预处理:展开所有代码,包括引入头文件,宏替换。
例如:gcc -E test.c -o test.i:表示对test.c文件进行预处理,结果保存在test.i中,其中-E表示只进行预处理,-o表示指定输出文件名称。
2.编译:检查语法语义错误,如果没有错位则将c语言解释成为汇编语言。
例如:gcc -S test.i -o test.s:表示对test.i文件进行编译处理,结果保存在test.s中,其中-S表示只进行编译处理,-o表示指定输出文件名称。
3.汇编:将汇编代码解释成为二进制的cpu指令。
例如:gcc -c test.s -o test.o:表示对test.s文件进行汇编处理,结果保存在test.o中,其中-c表示只进行汇编处理,-o表示指定输出文件名称。
4.链接:将所有的指令代码打包到一起(不仅仅是打包自己的代码,还有链接文件中的库函数指令代码),进行组织成为可执行程序。
例如:gcc test.o -o test.exe:表示对test.o文件进行链接处理,生成可执行程序test.exe文件,-o表示指定输出文件名称。

库分为:动态库和静态库
库的链接方式有:动态链接和静态链接
动态链接:链接动态库生成可执行程序,并没有把库中函数的实现指令直接拿过来写入可执行程序中,而是在可执行程序表中,在运行可执行的时候需要去加载动态库到内存中,如果动态库不存在,则程序无法运行。
静态链接:链接静态库生成可执行程序,直接将库中我们用到的函数的实现代码指令,写入到可执行程序文件中,程序运行时没有什么依赖。

特别提醒:
gcc编译器默认链接方式为:动态链接
直接生成exe文件为:gcc test.c -o test.exe
执行生成的exe文件为:./test.exe
这四个阶段如下图所示:
<<Linux基础环境常用工具—yum、vim、gcc/g++、gdb、git等>>_第4张图片


4.调试器:gdb

调试器:功能是调试观察程序的运行过程,目的是为了排查程序的运行错误。
程序的错误分:编译错误,链接错误、运行时错误,(运行中逻辑不对以及程序运行时崩溃)。
程序的发布方式有两种:debug模式和release模式.
Linux gcc/g++出来的二进制程序,默认是release模式
注意:要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项
例如:gcc -g test.c -o test.exe,生成debug调试版本。
gdb调试指令:如:gdb ./test.exe
gdb调试流程控制:
run( r ):直接运行程序
start:开始逐步调试
list(l):查看调试行附近的代码,如:
list test.c:12,查看文件第12行附近代码
next(n):逐过程调试,遇到函数直接运行完毕
step(s):逐语句调试,遇到函数则进入函数调试
until:直接运行到指定位置,如:
until test.c:15,直接运行到15行位置处
continue( c ):继续从当前调试位置运行
以上指令具体使用如下图所示
<<Linux基础环境常用工具—yum、vim、gcc/g++、gdb、git等>>_第5张图片

break(b):断点,如break test.c:14,在test.c中第14行设置断点;break func,在func函数的第一行处设置断点
info break(i b):查看断点信息
delete(d):删除断点,如delete id
watch:变量监控断点–当变量发生改变的时候停下来,如watch i,当i改变的时候,程序运行就停下来了。

gdb调试内存控制:
print( p ):查看或者设置变量内容,如:print i ,print i=10
backtrace(bt):查看函数调用栈,通常用于检测程序运行时崩溃位置,栈顶位置的函数就是程序发生崩溃的位置。

5.项目自动化构建工具:make/Makefile

Makefile:是一个文本文件,记录一个项目的构建规则流程。
make:是一个解释程序,对Makefile中记录的构建规则流程逐步解释执行,完成项目的构建。
Makefile的编写规则
1.vi Makefile,进入编写框
2.目标对象:依赖对象
[Tab]为了生成目标对象要执行的指令。
例如:
test:test.c
[Tab] gcc test.c -o test
,意思是将test.c文件生成目标文件test。
预定义变量的使用:
$@:表示目标对象
$^:表示所有依赖对象
$<:表示依赖对象的第一个
伪对象(.PHONY):声明一个目标对象与外部文件无关,表示每次这个对象不管是否最新都要重新生成。
例如下图所示:
在这里插入图片描述
若有很多以.c结尾的文件,则用更智能的规则来编写,具体如下图所示:
<<Linux基础环境常用工具—yum、vim、gcc/g++、gdb、git等>>_第6张图片

make的解释执行规则
1.在命令行敲击make命令,则表示运行Makefile解释程序,程序会在当前目录下找到名称为Makefile的文件,解释执行其中的项目构建规则。
2.在规则中,找到要生成的第一个目标对象(盘对目标对象是否已经存在,存在的话是否需要生成—根据原码文件的最后一次修改时间对比)
3.make每次在Makefile中只会找到第一个目标对象进行生成,生成之后就会退出(也就是说不会再去生成第二个目标对象)。
4.make在生成目标对象的时候,会先查找依赖对象的生成规则,先生成依赖对象,然后再去生成目标对象。

具体解释执行规则如下图所示:
<<Linux基础环境常用工具—yum、vim、gcc/g++、gdb、git等>>_第7张图片

6.项目的版本管理工具:git

git:整理归档项目周期的各个阶段,便于项目的管理。
git的三板斧操作:
1.git建立远程仓库(在github上)
2.git clone:将远程仓库克隆到本地。
3.git add --all ./ :提交本次修改记录。
4.git commit -m ‘备注信息’:提交本地仓库版本管理。
5.git push origin master:将本地版本同步到远程仓库。其中master是主分支。


7.小结

关于Linux基础环境常用的工具的介绍以及个人理解全部记忆到这篇博客上,希望对Linux感冒的铁汁们提供一点个人帮助,坚持学习的第N天,慢慢的发现自己步入了正轨,希望在今后的学习中,能花费更多的时间和精力在自己喜欢做的事情上,一起努力变优秀呐!

你可能感兴趣的:(linux,linux,编程语言)