一 gcc工作流程
1 预处理器 gcc -E
2 编译 gcc -S
3 汇编 gcc -c
4 链接 五参数
-o:指定生成的文件的名字
-D:在编译的时候定义宏(控制log的输出)
-I:指定头文件的路径
-g:gdb调试时候需要添加该信息
-O:编译优化,3个等级 -O(1-3)
-Wall:编译期间输出警告信息
二 制作静态库
1 命名规则:libMyName.a
2 制作步骤:
1)生成.o
gcc -c *.c
2)打包(将所有的.o文件)
ar rcs 静态库的名字 *.o
3 使用:main.c -L -l
gcc main.c (库) -LlibPath -llibname -o app -Include
三 制作动态库
1 动态库后缀 : .so – libmyname.so
2 制作步骤:
1)生成与位置无关的代码(.o)
gcc -fPIC -c *.c -Iinclude
2)将.c打包生成.so文件
gcc -shared -o libmytest.so *-o
3 使用main.c lib include
gcc main.c -Llib -l lmytest -Include -o app
应用程序不能执行,动态连接器链接不到自己制作的库
1临时设置方法:
export LD_LIARARY_PATH=./lib
2 永久设置方法
1)找到动态链接库的配置文件:/etc/id.so.conf
2)在该文件中添加动态库的目录(绝对路径)
3)更新:sudo ldconfig -v
四 vim
Vim是从vi发展过来的一款文本编辑器,使用:vi a.txt
工作模式:
1)命令模式–打开文件之后,默认进入命令模式
2)编辑模式–需要输入一些命令,切换到编辑模式
3)末行模式:在末行模式下可以输入一些命令
vim编辑器的使用
1 命令模式下的操作:
光标的移动:
H(前),J(下),K(上),L(后);行首:0;行尾:;文件开始位置:gg;文件末尾:G;行跳转:300G删除操作:删除光标后边的字符:x删除光标前边的字符:X删除光标处的单词:dw(光标移动到单词的开始位置,否则只能删除一部分)删除光标到行首的字符串:d0删除光标后行尾的字符窜:D(d;文件开始位置:gg;文件末尾:G;行跳转:300G
删除操作:
删除光标后边的字符:x
删除光标前边的字符:X
删除光标处的单词:dw(光标移动到单词的开始位置,否则只能删除一部分)
删除光标到行首的字符串:d0
删除光标后行尾的字符窜:D(d;文件开始位置:gg;文件末尾:G;行跳转:300G删除操作:删除光标后边的字符:x删除光标前边的字符:X删除光标处的单词:dw(光标移动到单词的开始位置,否则只能删除一部分)删除光标到行首的字符串:d0删除光标后行尾的字符窜:D(d)
删除光标当前行:dd
删除多行:ndd(n–自然数)
撤销操作:
撤销:u
反撤销:ctrl+r
复制粘贴:
复制:yy
复制多行:nyy
粘贴:p(光标所在行的下一行)
粘贴:P(光标所在行)
剪切==删除
可视模式:
切换到可视模式:v
选择内容:hjkl
操作:复制y,删除d
查找操作:
1)/hello
2)?hello
3)#–把光标移动到查找的单词上,按#
遍历时候的快捷键:N/n
r:替换当前字符
缩进 : 向右>>,向左<<
查看man文档
把光标放在对应的函数上,按:数字(第几章)后shift+k跳转到man文档
2 文本模式下的操作
切换到文本模式:
a–在贯标所在位置后边插入
A–在当前行的尾部插入
i–在光标所在位置的前边插入
I–在光标所在行的行首插入
o–在光标所在行的下边开辟一个新的行
O–在光标所在行的上边开辟一个新的行
s–删除光标后边的字符
S–删除光标所在的行
3 末行模式下的操作
查找:😒/tom/jack/g
:%s/tom/jack/
:20.25s/tom/jack/g
保存退出:
q:退出;q!:退出不保存;w:保存;wq:保存退出;x==wq
在命令模式下保存退出:ZZ
分屏:
水平分屏::sp
分屏切换:ctrl+ww
垂直分屏::vsp 如果显示不同文件::vsp 文件名字