Linux命令
https://www.bilibili.com/video/BV1dt411f7TZ?p=64
Day3 笔记
编辑器使用
工作模式:
- 命令模式 – 默认
- 编辑模式 -
- 末行模式 - :
具体使用
-
vim编辑器使用
命令模式:
(1) 光标移动
hjkl 前 下 上 后 移动光标
0 行首 $ 行尾
gg文件头部 G文件尾部 500G第500行
(2) 删除操作
删除光标所在字符 x
删除光标前面的字符 X
删除单词 dw (注意移动单词到光标单词的第一个字符上)
d0 删除光标前面所有东西
d$ / D 删除光标后面的所有内容
dd删除一行
4dd 删除4行
(3) 撤销操作
u 撤销
ctrl r 反撤销
(4) 复制粘贴
p粘贴 (粘贴在光标所在下一行)
P 粘贴在当前行
yy 复制所在行
4yy 复制4行内容
(5) 可视操作
v 切换到可视模式
复制 y 删除 d (无换行操作)
(6) 查找操作
/查找的内容(从光标位置 向下 最下边后 返回到头部)
n 向下切换 N 向上切换
?查找的内容 (从光标位置向上查找 顶部之后 返回尾部)
光标移动到单词处 # 开始搜索当前单词(7) 替换操作
r 单个字符替换
<</>> 缩进修改(8) 查看man文档
K 跳转到man文档 3K则跳转到第三章
zz保存退出
编辑模式 a 切换模式
a 在光标后开始插入字符
A 当前行尾部开始插入字符
i 在光标前开始插入字符
o 光标下一行创建新行并开始输入内容
O 光标上一行创建新行并开始输入内容
s 删除光标字符开始输入
S删除一整行并开始输入
**末行模式 :切换模式 **
300 跳转到行
字符串的替换
当前行的替换 s/tom/jack/g 则替换tom为jack
替换所有的 %s/tom/jack/g 则全部替换
替换某几行的内容 :27,30s/tom/jack/g
:!pwd 则可输入命令
退出模式 esc esc 则可退回
保存文件 :w保存 :q 退出 :q! 退出不保存 :wq 保存退出
分屏操作
末行模式下 水平分屏 :sp ctrl ww 切换 关闭全部要加all
垂直分屏: :vsp
-
gcc编译器
预处理 gcc -E sum.c -o sum.i
编译生成汇编文件 gcc -S sum.i -o sum.s
生成二进制文件 gcc -c sum.s -o sum.o
链接生成可执行程序 gcc sum.o -o app直接生成可执行程序 gcc sum.c -o myapp
指定头文件路径 gcc sum.c -I ./incude -o app -I include
指定宏 gcc sum.c -o app -I include -D DEBUG -O1/2/3 (优化等级) -Wall (输出警告信息) -g (添加调试信息)
-o 指定生成的文件的名字
-D 在编译的时候定义宏 (控制log的输出)
-I 指定头文件的路径
-g gdb调试的时候需要添加该参数
-O 编译优化,3个等级(1-3)等级
-Wall 编译期间输出警告信息
-
静态库
(1) 命名规则
lib + 库的名字 + .a
.libmaytest.a(2) 制作步骤
生成对应的.o gcc -c *.c
将生成的.o文件打包 ar rcs + 静态库的名字 (libMytest.a) + 生成的所有的. o(3) 发布和使用静态库
发布静态库
头文件(4) 优缺点
gcc main.c -I include -L lib -l Mycalc -o myapp
自己的程序 头文件 静态库 具体静态库(需要掐头去尾)生成可执行的文件
nm libMyCalc.a 可查看
优点:发布程序时不需要提供对应的库;执行调用库时加载速度快
缺点:打包到应用程序 导致库体积很大; 库发生了改变需要重新编译程序 -
动态库(共享库)
(1)命名规则
lib + 库的名字 + .so
0-3G的用户空间 程序启动后才加载动态库(2)制作步骤
生成与位置无关的代码(生成.o)gcc -fPIC -c *.c -I ./incude
将.o打包成共享库(动态库)gcc -shared -o libMyCalc.so *.o -I include(3) 发布和使用共享库
gcc main.c lib/libMyCalc.so -o ap -Iincude
gcc main.c -I include -L ./lib -l MyCalc -o myapp(4)解决执行程序时动态库无法被加载的问题ldd 查看可执行程序所依赖的共享库
echo $ LD_LIBRARY_PATH
exprot LD_LIBRARY_PATH = ./lib 直接修改环境变量(关闭当前终端后失效)
永久设置bash配置文件ls -a ;vi .bashrc; 添加以上语句
一般使用方法
找到动态连接器的配置文件 – 动态库的路径 ls -l ld.so.conf
写入配置文件 sudo vi ld.so.conf 添加o 添加后 wq
更新 sudo ldconfig -v
-
动态库的优缺点
优点:执行程序体积小;动态库更新不需要编译程序 (接口不变)
缺点:发布程序时需要提供动态库;没有打包在应用程序中,加载较慢