【Linux】vim形成动静态库操作

image-20220502220800930

  • access : 文件最近被访间的时间,我们发现实际操作下来,文件时间貌似没有变化(在较新Linux 内核中,Access时间不会被立即更新,而是有一定的时间间隔,0S才会自动进行更新时间)

  • modify : 最近一次修改文件内容的时间(当修改内容的时候,有可能修改了文件的属性(比如文件大小))

  • change : 最近一次修改文件属性的时间(修改文件权限等)


一、库

库文件都是二进制

那如何知道库里面有什么?通过:

  • 库本身
  • 头文件.h
  • 说明文档

动态库文件一般用.so结尾

静态库.a结尾

libxxx.so / libyyy.a-……

去掉lib和后缀.so/.a……之后剩下就是库名称


1. 查看依赖的库

ldd

image-20220502224805910

image-20220502225023102


2. 静态库

gcc -o xx xx -static

image-20220503133902183

  • gcc默认动态链接

静态库是将.o文件打包成一个文件

libmymath.a:add.o
	ar -rc $@ $^

%.o:%.c
	gcc -c $<

.PHONY:clean
clean:
	rm -rf add.o libmymath.a

.PHONY:output
output:
	mkdir output 
	cp -rf add.h output 
	cp -rf libmymath.a output

image-20220503162034548

  • 将打包好的放在一个目录里

image-20220503162904067

  • 查看打包哪些文件
ar -tv xx.a

%.c是GUNmake语法层,表示的是所有以".c"结尾的文件
而*.c则是linux shell 语法层的,比如:rm -f *.o 类似的。
意思基本是一样的,就是一个是GUNmake的一个是shell的


  • 如何使用?
gcc 编译的文件 -I需要头文件的目录 -L静态库的目录 -l静态库名称(去掉前缀,去掉后缀的名字)
gcc test.c -I./output -L./output -lmymath

image-20220504145611610


之前的库,在系统的默认路径下: /lib64, /usr/lib, /usr/include等编译器是能识别这些路径的
如果我不想带这些选项,可以把对应的库和头文件拷贝到默认路径下,但不推荐
上面的过程,也就是一般软件的安装过程!


3. 动态库

动态库可移植性差,体积小,如果库丢失,程序跑不了

  • shared: 表示生成共享库格式
  • fPIC:产生位置无关码(position independent code)
libmymath.so:add.o
	gcc -shared -o $@ $^
add.o:add.c
	gcc -fPIC -c -o $@ $^


.PHONY:clean
clean:
	rm -f add.o libmymath.so

.PHONY:output
output:
	mkdir output
	cp add.h output 
	cp libmymath.so output

image-20220504171841932

image-20220504171909872

image-20220504172157046


这里的动态库除了像静态库一样指明文件路径,以外,还要将其文件的环境变量添加到系统里,才能链接起来,而静态库是直接复制到文件里不需要找地址

gcc test.c -I./output -L./output -lmymath
export LD_LIBRARY_PATH=/home/rinne/class-practice/dynamic/output

image-20220504173918663


4. 添加路径到系统

在这个目录下touch一个.conf文件,再把目录复制进去

cd /etc/ld.so.conf.d/
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凛音Rinne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值