常用工具
- vim 文本编辑工具
- gcc/g++编译器 将C/c++等高级语言程序编译成为机器可识别程序
- gdb 程序调试工具
- makefile 不普通的普通文件
- yum 红帽子系列linux操作系统的软件包管理工具
vim:
从普通模式切换到插入模式的方法:
i:从光标所在位置开始插入
a:从光标所在位置的下一个字符处开始插入
I:将光标移动到行首,然后进入插入模式
A:将光标移动到行尾,然后进入插入模式
o:在光标所在行的下方,新建一行,进入插入模式
O:在光标所在行的上方,新建一行,进入插入模式
s:删除光标所在字符,然后进入插入模式
从普通模式切换到底行模式:
:w 保存
:q 退出
:q! 强制退出(不保存本次修改)
:wq 保存并退出
:!pwd 临时执行命令,按回车返回vim
从插入模式/底行模式返回普通模式
ESC
普通模式下的常用操作:
h 向左移动光标
j 向下移动光标
k 向上移动光标
l 向右移动光标
w 光标向右移动一个单词
b 光标向左移动一个单词
yy 复制光标所在行
nyy 从光标所在行开始向下复制n行
p 向光标所在行下方粘贴新行
P 向光标所在行上方粘贴新行
dd 删除光标所在行(vim种删除其实是剪切)
ndd 从光标所在行开始向下删除n行
x 删除光标所在字符
dw 删除光标位置开始的一个单词
u 撤销操作
ctrl+r 返回撤销操作
ctrl+v 进入列视图模式,可以进行选择操作
v 进入行视图模式,可以进行选择操作
r 替换光标所在字符
R 进入替换模式,对内容一直替换
gg 光标移动到文档首行
G 光标移动到文档末尾行
gg=G 全文缩进对齐
gcc使用:
- linux下程序的执行就是告诉操作系统程序文件在哪个路径下。
- gcc是一个编译工具,将我们所写的C语言程序编程成为机器可识别的语言程序。
- ABI—标准
- gcc常用选项
-o:指定要生成的文件的名称
-E:只预处理
-S:只编译
-c:只汇编
-static 静态链接(gcc默认是动态链接)
- 程序的编译过程:
- 预处理
- 去掉注释,展开所有代码
- 编译
- 先纠错,没有错误则编译成为汇编代码
- 汇编
- 将汇编代码生成机器可识别代码(汇编只是将我们写的代码编译完毕,但是不能运行,因为代码不完全,我们调用的一些库函数,并不知道如何实现,需要经过第四步才能生成可执行程序)
- 链接
- 将库中的函数链接过来和我们的代码最终合并生成可执行程序
- 链接过程有两种:
- 动态链接:链接的是动态库
- 静态链接:链接的是静态库
- 动态链接生成的可执行程序小,静态链接大,但是动态链接生成的程序运行时需要动态库的存在,静态库不需要(因为静态链接就是将库中的函数全部拿过来生成可执行程序了,所以大)
- 程序的链接方式默认是动态链接。
yum使用:
- yum是红帽子系列linux操作系统进行软件包管理的工具,软件的安装/移除/查看都是通过yum工具完成的。
- 查看
yum list | grep 想要安装的包名字
- 安装
yum install 想要安装的包名字
- 移除
yum remove 安装包名字
- 修改/更新yum源的方法
/etc/yum.repos.d/CentOS-Base.repo
- makefile-----不普通的普通文件
- 在makefile中我们通常定义很多的程序编译规则,在终端命令行下敲击一个make命令,那么这时候make这个程序,就会跑到当前目录下找寻这个Makefile文件,然后按照makefile中已经规划好的编译顺序以及编译规则来完成整个项目的编译。
- make这个命令—只在当前目录下找名字叫makefile/Makefile的文件
- 如何编写makefile
main.c -----> main 目标对象名称:依赖对象名称 【制表符】通过依赖对象生成目标对象的命令 'main' is up to date:
gdb使用:
- gdb调试一个程序需要这个程序在编译时候加上-g选项来开心调试,为可执行程序加入一些调试符号信息。gcc -g main.c -o main
- gdb如何加载程序
gdb ./main gdb进入之后 file./main
- gdb常用命令:
r/run 开始运行程序,程序直接跑起来 r -l -s -a 程序的参数在这里加载
start 开始逐步运行程序
list/l 查看当前行附近代码
n 下一步
until 直接运行到第n行
b 加断点 b main.c: 行号 给main.c第n行添加断点 b n 给当前函数第n行加断点 b func 给函数添加断点
d 默认删除所有断点 d n 删除id为n的断点
s 下一步进入函数内部
i 查看信息 i b 查看断点信息 p i 查看变量内容
watch 变量监控,查看内容修改会停下来
bt 查看函数调用栈信息