1、编辑器
1.1、vim的安装
指令:sudo apt-get install vim
1.2 vim的使用
格式:vim 文件名
如果文件存在,只打开,文件不存在,创建并打开
vim的4中模式:
命令模式,插入模式,地行模式,可视模式
1.2.1命令模式
复制,粘贴,删除,剪切等
切换命令模式
1直接vim打开文件,默认就是命令模式
2不管当前是什么模型,按下Esc就可以快速回到命令模式
复制指令:
yy--复制光标所在位置的一整行
nyy--复制光标所在位置往下n整行
yw--复制光标所在位置的一个单词
nyw--复制光标所在位置往后的n个单词
粘贴:
p--粘贴
删除/剪切
x--删除光标所在位置的单字符
X--删除光标所在位置的前一个位置的单字符
dd--删除/剪切光标所在位置的一整行
ndd--删除/剪切光标所在位置的往下的n整行
dw--删除/剪切光标所在位置的第一个单词
ndw--删除/剪切光标所在位置的往后的n个单词
d$ 删除/剪切光标所在位置到行尾的所有内容
d^ 删除/剪切光标所在位置到行首的所在内容
撤销:u
反撤销:ctrl + r
gg--光标快速回到文件开头
G -- 光标快速回到文件末尾
gg=G 文件中的内容会格式化对齐
1.2.2 插入模型--编写程序
切换插入模式:第一步先回到命令模式(Esc)
i: 插入到光标所在位置
I: 插入到光标所在位置的行首
a: 插入到光标所在位置的下一个位置
A: 插入到光标所在位置的行尾
o: 插入到光标所在位置的下一行
O: 插入到光标所在位置的上一行
记其中任意一个即可
1.2.3 底行模式
字符串替换,查找,保存,退出
方式1:切换底行模式
第一步先回到命令模式(Esc)
第二步输入冒号切换底行模式
保存:w+(回车)
退出: q+(回车)
保存并退出:wq+(回车)
强制退出:q!(回车)
文本替换:
整体替换:%s/原本的字符串/新的字符串/g
部分替换:m,ns/原本的字符串/新的字符串/g
整行换位置:
:xmy 将第X行,移动到第y行的后边
方式2:切换底行模式
第一步先回到命令模式(Esc)
第二步输入:(切换底行模式)
字符串查找:
/字符串(回车)
n 往后继续查找
N 往前继续查找
1.2.4可视模型--复制,剪切
先回到命令模式(Esc),再用V切换到可视模式(一次有效)
y--复制 d--剪切 x--删除
2 编译器
2.1 编译流程:
1:预处理:gcc-E main.c -o main.i2 : 编译(转汇编):gcc -S main.i -0 main.s
3 :汇编(转二进制):as main.s -o main.o
4 :链接(衔接库):gcc main.o -o main
2.2 gcc 的参数
-c:只编译,不衔接,相当于编译流程的前三步
-o: 重命名
-I(大写的i):后面紧跟头文件路劲
-l(小写的L):后面库名
-L:后面跟库路径(即使是当前路径也要加)
-g:生成带有调试信息的可执行程序
使用 gdb做调试。需要加参数-g
3 库
3.1 库的作用
保护源码,方便移植
3.2 LInux下库的分类
静态库,动态库;
3.3:静态库
特点:以空间换时间,在生成可执行程序的时候,复制了一份库到当前的可执行程序中,生成的可执行程序较大,浪费空间,但是节省时间。
制作流程:
第一步:准备功能函数(不能有main函数):这里以加减乘除的功能函数为例,指令以Fun.c为例。
第二步:将功能函数的.c只编译不链接,生成.o
指令:gcc -c Fun.c -o Fun.o
第三部:ar -rc libxxx.a *.o --xxx-库名
验证库:
方式1:.h 不封装
方式2:.h文件封装到include 中,需要指名头文件路径
3.4 动态库
特点:以时间换空间,在生成可执行程序的时候,保留了库中函数的入口到当前的可执行程序中,真正运行的时候,去相应的库里执行函数,浪费了时间,但是节省空间。
制作流程:
第一步:准备功能函数(不能有main函数):Fun.c
第二步:打包成库
指令:
gcc -c -fpic Fun.c -o Fun.o
第三部:打包成库
指令:
gcc -shared -fpic -o libXXX.so *.o XXX-库名
验证库:
1->将库放到指定路劲下:sudo mv 库名 /usr/lib
指令:
sudo mv liblood.so /usr/lib
2->gcc main.c -o mian -liblood -I./include