一、vim 文本编辑工具
vim有12中模式,每一种模式都有不同的功能,不同的模式做不同的操作
主要讲解三种模式:普通模式,插入模式,行底模式(视图模式,替换模式)
vim file 打开文件
从普通模式切换到插入模式:i
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行
xx 删除光标所在字符
dw 删除光标位置开始的下一个单词
u 撤销上一次操作
ctrl+r 返回撤销操作
ctrl+v 进入列视图模式,可以进行选择操作
v 进入行视图模式,可以进行选择操作
r 替换光标所在字符
R 进入替换模式,对内容一致替换
gg 光标移动到文档首行
G 光标移动到光标末位行
gg=G 全文缩进对齐
set nu 设置自动缩进
set ai 设置制表符的长度等于4个空格长度
二、gcc/g++编译器 将C/c++等高级语言程序编译成为机器可识别程序
linux下程序的执行就是告诉操作系统程序/文件在哪个文件下
gcc是一个编译工具,将C语言程序编译成为机器可识=识别的语言程序
chmod -x main.c转化为可执行程序
ABI----标准 二进制应用接口
gcc常用选项:
-O:制定要生成的文件的名称
-E:只预处理
-S:只编译
-C:只汇编
-static:静态链接(gcc默认是动态链接)
程序的编译过程:
1.预处理 去掉注释,展开所有代码
2.编译 先纠错,没有错误则编译成汇编代码
3.汇编 将汇编代码生成一个机器可识别的代码b(只能将代码汇编完毕,但是不能运行,因为代码不完全,
调用的库函数还不知道怎么实现,需要经过链接才可实现)
4.链接 将库中的函数链接过来和我们的代码最终合并并生成可执行程序
链接分为动态链接和静态链接,分别链接动态库和静态库。动态链接生成的可执行程序小,静态链接大,
但是动态链接生成的程序运行时需要动态库的存在,静态库不需要(因为静态链接就是将库中的函数全部拿过来生成可执行程序了,所以大)
程序的链接方式默认是动态链接
三、gdb 程序调试工具
gcc -g 选项是开启gdb调试选项,目的是为了在可执行程序中加入调试符号信息
gdb调试一个程序需要这个程序在编译的时候加上-g选项来开启调试,为可执行程序加入一些调试符号信息。gcc -g main.c -o main
gdb 如何加载程序
gdb ./main
gdb进入后 file ./main
gdb常用命令:
run 简写r 开始执行程序 程序直接跑起来
r -l -s -a程序参数在这里加载 s下一步,跟踪进入函数
start开始逐步调试程序
l 查看当前行附近代码(也可以指定行号)
n 下一步,不跟踪进入函数
until 行号 直接运行到第n行
b main.c:n 给mian.c第n行添加断点
b n 给当前文件第n行添加断点
b func 给函数添加断点
i 查看详细信息
i b 查看当前断点信息
d 默认删除所有断点
d n 删除id为n的断点
p 打印变量内容
watch 变量监控,变量内容修改时会停下来
bt 查看函数调用栈信息
四、makefile 不普通的普通文件
在makefile中我们通常定义很多的程序编译规则,在终端命令行下敲击一个make命令,那么这时候make这个成簇,就会跑到当前目录下找寻这个
Make file文件,然后按照makefile中已经规划好的编译顺序以及编译规则来完成整个项目的编译。
make这个命令只在当前目录下找名字叫makefile/Makefile的文件,逐步执行记录的编译规则
如何编写makefile
main.c ---->main
目标对象名称:依赖对象名称
[制表符](\t)通过依赖对象生成目标对象的命令
main is uo to data 说的是,目标对象已经是最新的了,不需要重新生
make这个程序会判断一下依赖文件的最后修改时间,和目标对象文件的最后修改时间,如果目标文件的时间戳大于依赖文件的时间戳,那么就证明依赖文件在上次编译
make可以检测目标对象和依赖对象的时间属性,判断程序是否需要重新编译
make永远只找一个目标对象生成,生成了第一个对象之后就退出
make可以指定要生成的对象 例如:make clean
伪对象:不管是不是最新的 ,都需要重新生成(执行下边的命令)使用.PHONY来申明一个对象是伪对象
变量:预定义变量----makefile已经提前定义好的变量
$@ 编写规则中药生成的目标对象
$^ 编写规则中所有的依赖对象
$< 编写规则中所有依赖对象的第一个
src=main.c
a=src a =src这个字符串 应该为a=$(src ) 变量的使用需要加上$符号,否则认为是字符串赋值
src=$(wildcard ./*.c) 获取当前目录下文件名字以.c结尾的文件名赋值
五、yum 红帽子系列linux操作系统的软件包管理工具
yum是红帽子系列linux操作系统进行软件包管理的工具
软件的安装/移除/查看都是通过yum工具完成的
查看
yum list | grep 想要安装的包名字
安装
yum install 想要安装的包名字
移除
yum remove 安装包名字