Linux中动态库的制作 和 使用[Linux高并发服务器开发]

兄弟 篇: Linux中静态库的制作 和 使用

        动态库的工作原理是:程序启动之后,动态库会被加载到内存中供程序使用。 动态库的代码不会被打包到可执行程序中。

一、命名规则

在Linux中:

libxxx.so

lib: 前缀 ,是固定的

xxx: 库的名字,自己起名

.so: 后缀,是固定的

在windows中:

libxxx.dll

二、动态库的制作

2.1  动态库的制作流程,如图:

2.2 分两个步骤:

1.获取目标文件,使用 gcc  -c  生成 .o 文件 ,得到 和位置无关的代码

gcc  -c  -fpic/-fPIC   a.c  b.c

2.使用 gcc  -shared 指令 获得动态库

gcc  -shared  a.o   b.o   -o   libcalc.so

三、动态库的使用

1.可执行程序, 可以通过  ldd [file] 命令  检查动态库依赖项

   比如,查看可执行程序 main 的动态库依赖项:

2.对于elf格式的可执行程序,是由 ld-linux.so 来完成的,它先后搜索 elf 文件的 DT_RPATH段环境变量LD_LIBRARY_PATH    ,/etc/profile  文件列表  , /etc/ld.so.conf文件列表   ,  /lib/, /usr/lib目录  找到库文件后将其载入内存.

如下介绍,常用 环境变量LD_LIBRARY_PATH    ,/etc/profile  文件列表  , /etc/ld.so.conf文件列表  三种方式  更改环境变量,添加 动态链接库的绝对路径。

DT_RPATH段  修改不了 ;

LD_LIBRARY_PATH 环境变量是临时,更改方法:

 /etc/profile  文件列表 环境变量更改:

/etc/ld.so.conf文件列表 环境变量更改:

 /lib/, /usr/lib目录 因为这两个目录含有很多文件,如果将动态库文件 拷贝过来,容易产生重名覆盖,会出现错误。所以, 不把 动态链接库 拷贝到 这两个目录。

四、静态库 和 动态库 的对比

静态库:

 

动态库:

 

【Linux高并发服务器开发】  坚持的 第 3 天  ,加油 !!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值