Linux 03day--基础命令04(vim编辑器、gcc、静态库、动态库)

vim编辑器

安装 : sudo apt-get install vim
命令模式
移动光标
gg – 光标移动文件开头
G – 光标移动到文件末尾
0 – 光标移动到行首
$ – 光标移动到行尾
123G – 跳转到第123行
删除(删除相当于剪切)
x – 删除光标后一个字符
X – 删除光标前一个字符
dw – 删除单词
d0 – 删除光标前本行所有内容,不包含光标所在字符
D(d$) – 删除光标后本行所有内容,包含光标所在字符
dd – 删除光标所在行
n dd – 删除指定的n行数
撤销
u – 撤销
Ctr + r – 反撤销
复制粘贴
yy – 复制当前行
n yy – 复制 n 行
p – 在光标所在位置向下开一行 粘
P – 在光标所在位置向上开一行 粘
可视模式(选字)
v – 按字移动
查找
/hello – 从光标所在位置向后查找 hello(n: 下一个 ; N:上一个)
?hello – 从光标所在位置向前查找 hello(n: 下一个 ; N:上一个)
文本行移动
1)>> – 文本行右移
2)<< – 文本行左移
文本输入模式
i – 插入光标前一个字符
I – 插入行首
a – 插入光标后一个字符
A – 插入行未
o – 向下新开一行,插入行首
O – 向上新开一行,插入行首
s – 删除光标所在的字符
S – 删除当前行
末行模式
行跳转
:123 – 跳转到123行
替换
替换一行
: s/abc/123 – 将当前行中的第一个abc替换为123
: s/abc/123/g – 将当前行中的abc全部替换为123
替换全部
:%s/abc/123 – 将所有行中的第一个abc替换为123
:%s/abc/123/g – 将所有行中的abc全部替换为123
替换指定行
:10,30s/abc/123/g – 将10-30行中的abc全部替换为123
分屏操作
sp – 水平将屏幕分为两部分
vsp – 垂直将屏幕分为两部分
sp(vsp) + filename – 水平或垂直拆分窗口显示两个不同的文件
Ctrl + ww 切屏
用vim做IDE
系统级配置文件目录 – /etc/vim/vimrc
用户级配置文件目录 – ~/.vim/vimrc
保存退出
w – 保存
q – 退出
q! – 退出不保存
wq – 保存并退出

gcc(E S c)

为生成文件指定名称:-o
指定头文件目录:-I(大写的i)+目录
编译时定义宏:-D
编译优化:-O(大写的o)n n=0∼3
-O0 - 没有优化
-O1 - 缺省值
-O3 - 优化级别最高
提示更多警告信息:-Wall
只编译子程序(生成.o文件,用于生成静态/动态库文件):-c
生成预处理文件:-E
包含调试信息:-g (gdb调试的时候必须加此参数)

静态库

命名格式
lib + 静态库名 + .a(libsort.a)
步骤

  1. 得到.o文件(gcc -c hello.c -o hello.o)
  2. 得到静态库文件libmytest.a(ar rcs libmytest.a hello.o )
    ar – 工具不包含在gcc中
    r – 将文件插入静态库中
    c – 创建静态库,不管库是否存在
    s – 写入一个目标文件索引到库中,或者更新一个存在的目标文件索引。
  3. 第一种使用静态库方法(用静态库和mian.c生成可执行文件.out)
    gcc + main.c + -L 静态库路径 + -l(小写L)静态库名 + -I(大写i)头文件目录 + -o 可执行文件名
    gcc main.c -L./ -lmytest -I./ -o app
    -L – 指定库所在的路径
    -l – 指定库的名字(掐头去尾:去掉前缀 lib,去掉后缀 .a)
    -I – 头文件目录位置
  4. 第二种使用静态库方法
    gcc + 源文件 + -I(大写i)头文件 + libxxx.a

优点
寻址方便,速度快
库被打包到可执行程序中,直接发布可执行程序即可使用
缺点
静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。
如果静态函数库改变了,那么你的程序必须重新编译。
使用场合
在核心程序上使用,保证速度,可忽视空间

动态库(共享库)

命名格式
lib + 库名称 + .so (libmytest.so)
制作

  1. 生成“与位置无关”的目标文件 – gcc -fPIC -c hello.c (参数 -fPIC 表示生成与位置无关代码)
  2. 制作动态库 – gcc -shared -o libmytest.so hello.o(参数:-shared 制作动态库 ; -o:重命名生成的新文件)
  3. 使用动态库 – gcc main.c -L./ -l(小写L)mytest -I(大写i)./ -o app
    -L – 指定库所在的路径
    -l – 指定库的名字(掐头去尾:去掉前缀 lib,去掉后缀 .a)
    -I – 头文件目录位置
    4.手动连接动态库(查看依赖的动态库:ldd app 发现mytest找不到)

手动连接动态库

  1. 临时设置:export LD_LIBRARY_PATH=库路径,将当前目录加入环境变量,但是终端退出了就无效了,常用于测试。
  2. 永久设置:将上条写入家目录下.bashrc文件中,需要重新启动终端(ls -a 因为是隐藏文件)
  3. 粗暴设置:直接将动态库文件libmytest.so文件拷贝到/usr/lib/【/lib】目录下。(比较傻逼)
  4. 将libmytest.so所在绝对路径追加入到/etc/ld.so.conf文件,使用sudo ldconfig -v 更新
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值