vim的工作模式
- vim a.c(文件):打开文件
- 写完数据后,esc+:wq退出
- gcc a.c(源文件) -o a(生成的文件):编译成可执行的文件
- ./a(执行的文件):运行可执行的文件

vim常用快捷键
跳转和删除
- i:输入,光标前面
- I:输入,光标前面
- a:输入,光标会移动到
- A:输入,光标会移动到最后
- o:输入,光标会移动到下一行
- O:输入,光标会移动到上一行
- s:输入,会删除所在光标的字符
- S:输入,会删除所在光标的行
- h:左
- j:下
- k:上
- l:右
- gg跳到行首
- G:跳到末尾
-$:跳转到行尾
-0:跳转到行首 - gg=G:格式化代码
- dw:删除单词,需要注意的是光标要在单词的开始
- x:删除某个字符
- d0:删除光标到行首
- v+h/j/k/l:删除选中的区域
- dd:删除整行
- 3dd:删除3行
赋值和粘贴查找替换
- yy复制
- p:粘贴到下一行
- P:粘贴本行
- dd:其实是删除并赋值(剪切)
- 3yy:赋值3行
- *:跳转到下一个
- /+define+回车:查找,n跳转到下一个,N是查看上一个
- r+替换的字符:把当前字符替换成替换的字符
- :s /要替换的字符/替换后的字符。末行模式下,只替换成光标所在行并且是前一个
- :%s /要替换的字符/替换后的字符。 每一行都替换,而且是前一个
- :%s /要替换的字符/替换后的字/g。替换所有
- :1,3s /要替换的字符/替换后的字/g。替换1-3行的字符
其他
- u:撤销
- ctrl+r:反撤销
- sp:分屏
- ctrl+ww:切换分屏
- q:退出当前
- wqall:保存退出全部
gcc编译四步骤
-
1.预处理阶段
宏定义展开,宏定义替换,展开include的文件
gcc -E -o xx.i xx.c -
2.预编译阶段
GCC才会去检查你代码的规范性,语法是否有错误,gcc会把代码翻译成汇编 -
3.汇编阶段
gcc -S -o xx.s xx.i
把.s文件翻译成二进制.o文件(机器的指令),文本打开的是乱码 -
4.链接阶段
计算逻辑地址,合并数据段,有些函数是在另一个so库文件中的
动态库和静态库
区别
静态库:其实就是内容的拷贝,运行阶段没有.a文件了也是可以执行的
动态库:不会拷贝内容,没有so不能运行的。运行阶段的作用,生成so的时候要生成与位置无关的代码
静态库动态库生成
生成静态库
-
.c文件生成.o文件
gcc -c xx.c -o xx.o -
使用ar工具制作静态库
ar ras libxx.a xx.o xxx.o -
编译静态库到可执行的文件
gcc xx.c libxx.a -o hello
生成动态库
-
.c文件生成.o文件(要生成与位置无关的代码)
gcc -c xx.c -o xx.o -fPIC -
使用gcc -shared 制作动态库
gcc -shared -o libxx.so xx.o xxx.o -
编译动态库到可执行的文件,需要指定动态库的名称,指定库的路径
gcc a.c -o a -l名称 -L../
虚拟机内存

网友评论