Linux复习之动态库的建立与使用

动态库又被称作共享库,编译时链接动态库,但是不加载目标代码,只有在运行时才加载相关的目标代码到内存,进程结束时自动释放所占内存。

动态库的建立

还是以排序函数sort.c与bank.h为例:
1.编辑sort.c与bank.h文件
sort.c
bank.h
2.生成sort.o文件
指令:gcc -c -fpic sort.c
在这里插入图片描述
选项-fpic的作用是将源文件编译成带有PIC标志的目标文件
3.将文件加入到动态库中
gcc -shared xxxxx.o yyyy.o -o libxxx.so
在这里插入图片描述

动态库的使用

和静态库一样,动态库也有参数法和直接法两种使用方法
1.参数法
格式:gcc 主程序 -l 动态库名(去掉lib和.so) -L 动态库地址
2.直接法
格式:gcc 主程序 动态库全名
将sort.c生成动态库libmath.so之后,再通过参数法与动态库进行链接生成可执行文件,如下图:
在这里插入图片描述
可以看见当执行a.out时,出现linux动态加载器找不到libmath.so文件的错误提示信息,我们知道动态库是在程序运行阶段进行链接,一般加载器会在/lib目录下搜寻动态库进行链接,所以一定要把建好的库移动到/lib目录下(需要root权限),执行过程如下:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值