Linux 学习笔记 - 动态库(共享库)的制作与使用及执行失败的解决方案

动态链接库 :在运行时被可执行程序调用,灵活度更高。
后缀:.so 。类似于 Windows 平台下的 .dll 文件

1.准备工作
(1)看我的博客 - 《 Linux 学习笔记 - gcc使用介绍》
(2)程序准备
在这里插入图片描述
head.h(在文件夹include中)
在这里插入图片描述
add.c(在文件夹src中)
在这里插入图片描述
sub.c (在文件夹src中)
在这里插入图片描述

2.动态库的制作过程

在这里插入图片描述

3、使用动态库
3.1、方法1:gcc main.c lib/libMyCalc.so -o sumapp -Iinclude
在这里插入图片描述

3.2、方法2:gcc main.c -Iinclude -L./lib -lMyCalc -o sumapp2 但是会出现如下错误
在这里插入图片描述
推荐使用方案4

在这里插入图片描述
3.2.1解决方案1:拷贝生成的动态链接库到根目录下的lib文件夹中,但是这种方法不推荐,因为这样可能会影响系统的运行
在这里插入图片描述
3.2.2解决方案2:export LD_LIBRARY_PATH=./lib 临时的设置,终端关闭后还是会再次出错。
这种方法调试用的比较多
在这里插入图片描述
3.2.3 解决方案3:
永久设置:直接将export LD_LIBRARY_PATH=/home/zy/test/teststaticlib/lib写在 home/zy目录下.bashrc的最后一行中,如下图所示
在这里插入图片描述
在这里插入图片描述
【注意】重启终端,即可完成
在这里插入图片描述
3.2.4 解决方案4(推荐):
在这里插入图片描述
在ld.so.conf中加入动态库所在的路径:/home/zy/test/teststaticlib/lib

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.动态库使用小结:
在这里插入图片描述

5.动态库的优缺点
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zy47675676/article/details/82864846