动态库 的制作和使用

在这里插入图片描述

制作流程和使用

制作:

  1. gcc -c -fpic xxx.c:得到.o文件

  2. gcc -shared xxx.o libname.so:得到 libname.so文件

-fpic:生成与位置无关的文件
和静态库的流程一样,仅仅命令有区别。
👉👉👉静态库的制作和使用
在这里插入图片描述

使用:

gcc main.c -o App -I(i) 头文件路径 -l(L) 库名字(xxx) -L 库路径

动态库加载失败&解决

失败的原因:

系统找不到库文件的路径

ldd命令

可以通过该命令查看动态库的依赖关系,如下如所示:
在这里插入图片描述

系统加载动态库(共享库)的顺序

系统通过动态载入器获取动态库的绝对路径,搜索文件顺序如下所示:

在这里插入图片描述

问题解决途径

上边知道了搜索路径,我们可以将动态库放到任意一个位置,环境变量或者其他文件中
查看动态库路径

pwd:查看当前路径

一、修改环境变量

1. 放到环境变量中(终端级别

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wlm/Linux/lesson06/lib

👆上边指令表示在环境变量中追加动态库文件路径

echo $LD_LIBRARY_PATH

查看刚刚添加的环境变量
注意: 该方法只在当前终端有效,重新打开终端后失效

2. 在~/bashrc文件中添加环境变量,使其永久有效 (用户级别
首先进入家目录(~),然后进行下面操作:

命令1:vim .bashrc :打开bashrc文件

在文件最后添加👇:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wlm/Linux/lesson06/lib

命令2. .bashrc:使修改后文件生效
命令2:source .bashrc 两个命令一个意思

3.在/etc/profile文件中添加环境变量,使其永久有效 (系统级别

sudo vim /etc/profile
在文件最后添加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wlm/Linux/lesson06/lib

source /etc/profile:使文件生效

二、修改/etc/ld.so.cache文件列表

sudo vim /etc/ld.so.conf
动态库文件路径放在该文件中

sudo ldconfig:使文件生效

三、将动态库放在/lib 或 /usr/lib文件中(不推荐
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小猛笔记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值