文章目录
软件包管理器——APT(如果是centos就是yum)
软件包好比app,软件包管理器就是appstore,使用软件包管理器下载应用方便安全。

安装和删除
安装前先更新一下软件包
sudo apt update
安装指定的软件包
sudo apt install <package_name>
还可以一次安装多个软件包
sudo apt install package1 package2 package3
删除软件包
sudo apt remove package_name
sudo可以临时提升用户的权限,以 root 的身份执行特权操作,sudo命令执行会被系统记录,相比直接切换到 root 下更加安全,并且管理员可以编辑sudo的授权范围。


文本编辑器——vim
vim的三种模式:命令、插入、底行模式
命令模式:移动光标、删除、复制、粘贴等操作
插入模式:用于文本输入
底行模式:用于高级操作,如保存、退出文件,搜索和替换等

刚进入vim时,vim默认是命令模式

除了按i进入插入模式外,还可以按a光标移动到下一个位置并进入插入模式,按o会在当前光标处的下方插入一个新行,光标移动到新行并且进入插入模式

vim的快捷键
命令模式
| 功能 | 快捷键 |
|---|---|
| 光标上移 | k |
| 光标下移 | j |
| 光标左移 | h |
| 光标右移 | l |
| 移动到行尾 | $ |
| 移动到行首 | ^ |
| 移动到文本开始 | gg |
| 移动到文本末尾 | Shift+g |
| 移动到第n行行首 | n+Shift+g |
| 当前光标下移n行 | n + Enter |
| 跳到下个字的开头 | w |
| 跳到下个字的结尾 | e |
| 跳到上个字的开头 | b |
| 删除光标所在位置的字符 | x |
| 删除光标所在位置开始往后的 n 个字符 | nx |
| 删除光标所在位置的前一个字符 | X |
| 删除光标所在位置的前 n 个字符 | nX |
| 删除光标所在行 | dd |
| 删除光标所在行开始往下的 n 行 | ndd |
| 复制光标所在行到缓冲区 | yy |
| 复制光标所在行开始往下的 n 行到缓冲区 | nyy |
| 将光标所在位置开始到字尾的字符复制到缓冲区 | yw |
| 将光标所在位置开始往后的 n 个字复制到缓冲区 | nyw |
| 剪切光标所在行 | dd |
| 剪切光标所在行开始往下的 n 行 | ndd |
| 将已复制/剪切的内容在光标的下一行粘贴上 | p |
| 将已复制/剪切的内容在光标的下一行粘贴 n 次 | np |
| 撤销 | u |
| 恢复刚刚的撤销 | Ctrl+r |
| 完成光标所在位置字符的大小写切换 | ~ |
| 完成光标所在位置开始往后的 n 个字符的大小写切换 | n~ |
| 替换光标所在位置的字符 | r |
| 替换光标所到位置的字符,直到按下 Esc 键为止 | R |
| 将光标所在位置开始到字尾的字符删除,并进入插入模式 | cw |
| 将光标所在位置开始往后的 n 个字删除,并进入插入模式 | cnw |
| 上翻一页 | Ctrl+b |
| 下翻一页 | Ctrl+f |
| 上翻半页 | Ctrl+u |
| 下翻半页 | Ctrl+d |
底行模式
| 功能 | 快捷键 |
|---|---|
| 显示行号 | set nu |
| 取消行号 | set nonu |
| 保存文件 | w |
| 退出 vim(强制退出可在后面加 !) | q/q! |
| 保存退出 | wq |
| 实现多文件的编辑 | vs 文件名 |
| 光标在多屏幕下进行切换 | Ctrl+w+w |
| 在不退出 vim 的情况下执行 Linux 指令 | !+指令 |
编译器——gcc/g++
gcc默认编译c语言,如果要编译c++还是用g++更好
gcc和g++用法是一样的
gcc/g++常见指令:
- -E 只进行预处理,需要把他重定向到一个输出文件里面
- -S编译到汇编语言,不进行汇编和链接,即只进行预处理和编译。
- -c编译到目标代码。
- -o将处理结果输出到指定文件,该选项后需紧跟输出文件名。(不指定就为a.out文件)。
- -static此选项对生成的文件采用静态链接。
- -g生成调试信息(若不携带该选项则默认生成release版本)。
- -shared 此选项将尽量使用动态库,生成文件较小。
- -w不生成任何警告信息。
- Wall生成所有警告信息。
- -O0/-O1/-O2/-O3编译器优化选项的四个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高。

自动化构建工具——make/Makefile
make/Makefil 是linux中的一对自动化构建工具
make是一个命令工具,⼀个解释Makefile中指令的命令⼯具。
Makefile通常由目标文件、依赖关系、命令组成的。
如何使用
第一步:
使用Makefile前先在目录下创建一个makefile或者Makefile文件,然后用vim编辑

第二步
下图中myproc是目标文件,目标文件依赖myproc.c
第二行是构建目标文件的命令

第三步
编辑完保存,执行make命令就可以生成目标文件

Makefile还可以简写
- $@:表示依赖关系中的目标文件(冒号左侧)
- $^:表示依赖关系中的依赖文件列表(冒号右侧全部)
- $<:表示依赖关系中的第一个依赖文件(冒号右侧第一个)
make的原理

解析Makefile目标:make命令会先从上往下扫描建立依赖关系网
检查依赖关系:在上图第一行,myproc.o文件不存在,Makefile会形成一个类似堆栈过程,让第一个依赖方法入栈
递归依赖:如果一直都找不到依赖文件就会根据依赖关系递归依赖到最后一行
最终在最后一次的依赖关系中找到myproc.c,再出栈依并执行,做到了从上到下扫描,从下到上执行,最终形成myproc目标文件。(找不到依赖文件入栈,找到了出栈)
如果再这个过程中出现错误或者最后的依赖文件找不到,make会报错。
Makefile的清理

.PHONY是一个伪目标,用来告诉make哪些目标不是真正的文件名,我的clean是为了删除文件,保持工作目录的整洁,如果不加.PHONY,而且项目中存在一个clean文件,clean文件万一比依赖文件更新,make就会认为clean文件是最新的,从而不会执行make clean。
所以在将clean定义为伪目标时,它会告诉make,clean总是被执行,不用考虑其他。
make并不能重复执行,因为系统会根据时间戳来判断是否执行,如果要多次执行,没有被.PHONY修饰那就还有touch,touch会彻底更新时间戳。

调试器——gdb
调试器要在debug模式下才能进行,在gcc/g++生成可执行文件时,需要加上-g

gdb常用快捷键:
| 分类 | 功能 | 快捷键 |
|---|---|---|
| 调试 | 运行代码(启动调试) | run/r |
| 逐过程调试 | next/n | |
| 逐语句调试 | step/s | |
| 跳转至指定行 | until 行号 | |
| 执行完当前正在调用的函数后停下来(不能是主函数) | finish | |
| 运行到下一个断点处 | continue/c | |
| 修改变量的值为 x | set var 变量=x | |
| 显示 | 显示从第 n 行开始的源代码,每次显示 10 行,若 n 未给出则默认从上次的位置往下显示 | list/l n |
| 显示该函数的源代码 | list/l 函数名 | |
| 打印变量的值 | print/p 变量 | |
| 打印变量的地址 | print/p &变量 | |
| 打印表达式的值,通过表达式可以修改变量的值 | print/p 表达式 | |
| 将变量加入常显示(每次停下来都显示它的值) | display 变量 | |
| 将变量的地址加入常显示 | display &变量 | |
| 取消指定编号变量的常显示 | undisplay 编号 | |
| 查看各级函数调用及参数 | bt | |
| 查看当前栈帧当中局部变量的值 | info/i locals | |
| 断点 | 在第 n 行设置断点 | break/b n |
| 在某函数体内第一行设置断点 | break/b 函数名 | |
| 查看已打断点信息 | info breakpoint/b | |
| 删除指定编号的断点 | delete/d 编号 | |
| 禁用指定编号的断点 | disable 编号 | |
| 启用指定编号的断点 | enable 编号 | |
| 退出GDB | 退出 GDB | quit/q |
1078

被折叠的 条评论
为什么被折叠?



