目录
一、包安装器:yum
1.什么是yum
yum 就是一个应用商店, 类似于华为商店, 苹果商店等等,里面有经过yum源认证的软件包。
如果程序员想要用哪软件包,可以使用yum搜索和安装。
由于是从yum源下载到本地进行安装 ,所以必须要有网络
2.yum三板斧
yum list : 查看yum都有哪些安装包(加上管道进行过滤)
例如 : yum list | grep “tree”
指令 | 用法 | 备注 |
yum install | yum install [-y] [待要安装的软件包名称] | 安装某个软件包 |
yum remove | yum remove [待要删除的软件包名称] | 卸载某个软件包 |
3.安装lrzsz或者xftp
lrzsz :可以支持文件的上传和下载
rz :将win机器的文件上传到Linux操作系统
sz :将Linux下的文件下载到win机器
xftp :文件上传和下载的工具,和xshell是同源(工作中用的比较多)
二、编辑器:vim
1.常见的三种模式:
1.1 正常模式:控制屏幕光标的移动,字符、字或者行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode .
1.2 插入模式:只有在Insert mode下,才可以做文字的输入,按[ESC]键可以回到正常模式。
1.3 底行模式:文件保存或者退出,也可进行文件替换,找字符串,列出行号等操作。在命令行模式下,shift+:即可进入该模式。
2.模式之间的切换
3.七字真言(正常模式下的快捷操作)
移删复替撤更跳
移:(hjkl/上下左右键)
按[w] :光标跳到下个字的开头[重要]
按[b] :光标回到上个字的开头[重要]
按[gg] :进入到文本的开始[重要]
按[G] :移动到文章的最后[重要]
按[$] :移动到光标所在行的“行尾”[重要]
按[^] :移动到光标所在行的“行首”[重要]
删:
[x]:每按一次,删除光标所在位置的一个字符[重要]
[#x]:例如,[6x]表示删除光标所在位置的“后面(包含自己在内)”6个字符
[X] :大写的X,每按一次,删除光标所在位置的“前面”一个字符
[#X] :例如,[20X]表示删除光标所在位置的前20个字符
[dd] :删除光标所在行[重要]
[#dd] :从光标所在行开始删除#行[重要]
复:
[yy] :复制光标所在行到缓存区。[重要]
[#yy] :例如,[6yy]表示拷贝从光标所在的该行“往下数”6行文字
[p] :将缓冲区内的字符粘贴到光标所在位置。位置:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。[重要 ]
替:
[r] :替换光标所在处的字符。
[R] :替换光标所到之处的字符,直到按下[ESC]键为止。[重要]
撤:
[u] :如果你误执行一个命令,可以马上按下[u],回到上一个操作。按多次“u”可执行多次回复。[重要]
[ctrl + r] :撤销的恢复[重要]
更:
[cw] :更改光标所在处的字尾处
[c#w] :例如,[c3w]表示更改3个字
跳:
[#G] :例如,[15G],表示移动光标至文章的第15行首。
4.其他操作
4.1:多行注释,多行去注释
多行注释:
(1)ctrl + v
(2)选中需要注释的行,使用hjkl移动光标
(3)shift + i :进入插入模式
(4)输入注释符号
(5)esc
多行去注释:
(1)ctrl + v
(2)选中需要注释的行当中的注释字符,使用hjkl移动光标
(3)x删除掉
4.2替换
单行首个目标字符串替换:
s/[待替换的目标字符串]/[替换成为该字符串]/
单行全部目标字符串的替换:
s/[待替换的目标字符串]/[替换成为该字符串]/g
全文替换:
%s/[待替换的目标字符串]/[替换成为该字符串]/g
指定行替换:
(num1,num2)s/[待替换的目标字符串]/[替换成为该字符串]/g
结论:
g :表示替换当前行所有
% :代表当前所有行
三、编译器:gcc/g++
1.gcc编译C,g++编译C++
2.编译的4个过程:预处理,编译,汇编,链接
预处理:
宏替换,头文件展开,删除注释,条件编译
gcc -E [source file] -o [xxxx].i
选项“-E”,该选项的作用是让gcc在预处理结束后停止编译过程
选项“-o”是指目标文件
“.i”文件为已经过预处理的C原始程序。
编译:
将源文件生成为汇编代码
例子:gcc -S test.c/test.i -o test.s
汇编:
将汇编代码转换为二进制代码
例子:gcc -c test.c/test.i/test.s -o test.o
链接:
将若干个二进制代码(.o)或者库文件链接起来生成可执行程序或者库文件
gcc test.c -o mytest
mytest:就是可执行程序的名字
四、调试器:gdb(重要!!)
1.程序发布的两种方式:debug模式和release模式
-g:命令行参数,给gcc/g++
2.调试的基础方法:
gdb [binfile]
指令 | 作用 |
l [filename] | 查看某个函数的源码 |
r | 程序执行起来 |
n | 逐过程:F10(VS平台下) |
s | 逐语句:F11(VS平台下) |
b [行号] | 打断点(行号是源代码中的行号) |
i b | 查看断点(info breakpoints) |
c | 继续执行 |
delet breakpoints | 删除所有的断点 |
delet breakpoints n | 删除序号为n的断点 |
disable breakpoints | 禁用断点 |
enable breakpoints | 启用断点 |
infor locals | 查看当前帧局部变量的值 |
p [变量名] | 查看变量的值 |
bt | 展示调用堆栈,可以通过调用的堆栈来观察代码执行函数的调用关系 |
q | 推出 |
!gcc | 重复上一次执行的gcc编译命令 |
注意:1.一定要有一个可执行的程序
2.编译debug版本的可执行程序(gcc/g++:-g)
b [行号]
例如:b 14 就是在源代码的14行打一个断点
i b:查看断点信息:
bt :展示调用堆栈
例如:交换变量的程序(main函数和Swap函数调用堆栈)
3. 调试的应用场景:
1.程序没有执行起来,调试可执行程序(重要的)
2.调试正在运行的程序(暂时不说)
gdb attach pid
3.调试崩溃的程序产生的coredump文件
3.0 coredump文件:核心转储文件,是程序在崩溃一瞬间内存的映像(相当于案发现场)
3.1 ulimit -a
core file size :决定产生的coredump文件最大能够多大
core file size :限制核心转储文件大小
0:程序崩溃也不会产生coredump文件
unlimited:不限制核心转储文件的大小(理论上,不管coredump文件多大,都会产生)
[硬盘大小来决定
1.如果产生的coredump文件的大小,小于空闲的磁盘空间数量,正常产生
2.如果产生的coredump文件的大小,大于空闲磁盘的大小,即使core file size的值是unlimited,那也不会生成coredump文件(原因是因为磁盘的空间不足)]
3.2调试命令
gdb 可执行程序 cordump文件
如果说我们想要通过gdb + coredump方式调试,可执行程序也应该是debug版本,非常重要
4.自动化构建项目:make&makefile
4.1 make是一个命令
makefile是一个文件
make根据makefile的文件内容,进行解析,编译程序(构建项目),从而生成可执行程序。
4.2makefile文件格式
目标对象:依赖对象(生成目标对象时依赖的源码文件/目标文件)
编译命令(如何通过依赖对象生成目标对象)
4.3make的工作方式
1.只为生成第一个目标对象而服务,
如果生成了目标对象则后续文件当中的内容不解析
如果为了生成第一个目标对象,需要先生成依赖的对象,则在makefile文件当中查 找生成依赖对象的方法。
如果发现依赖对象不存在,则报错返回。
2.若依赖对象的最后一次修改时间小于目标对象的最后一次修改时间,则不生产。
make默认在当前路径下寻找文件名为“makefile”或者“Makefile”的文件来进行解析,如果 找不到,则报错。
4.4makefile文件当中的自定义变量和内置变量
内置变量:
$^:所有依赖的对象
$@:目标对象
$<:代表第一个依赖的对象
自定义变量:可以自己给变量起名字,后续使用$符号进行解析