在之前的《栈的链式存储实验》和《队列的链式存储实验》里复用了《线性表之双向链表实验》里的 dlinklist.h 和 dlinklist.c 文件,本篇以静态库和动态库的方式,再次实现代码复用。
一、静态库
1、dlinklist.h 文件
详见我的另一篇文章《线性表之双向链表实验》。
2、dlinklist.c 文件
详见我的另一篇文章《线性表之双向链表实验》。
生成 dlinklist.o 文件:
生成 libdlinklist.a 静态库文件:
静态库以 lib 开头,以 .a 为后缀,中间 dlinklist 为库名。
将头文件 dlinklist.h 拷贝到 /usr/local/include 目录下:
将静态库文件 libdlinklist.a 拷贝到 /usr/local/lib 目录下:
将测试文件 main.c 文件(详见我的另一篇文章《线性表之双向链表实验》)中的如下一行:
修改为:
使用静态库编译测试文件:
其中,-l 参数是调用库文件,必须放在最后。完整的命令如下:
之所以省略了 -L/usr/local/lib,这是因为静态库文件 libdlinklist.a 位于 /usr/local/lib 目录下,如果在其它目录,则必须指定。
libdl.so
libc.so
二、动态库
1、dlinklist.h 文件
详见我的另一篇文章《线性表之双向链表实验》。
2、dlinklist.c 文件
详见我的另一篇文章《线性表之双向链表实验》。
生成 libdlinklist.so 动态库文件:
动态库以 lib 开头,以 .so 为后缀,中间 dlinklist 为库名。
将头文件 dlinklist.h 拷贝到 /usr/local/include 目录下:
将动态库文件 libdlinklist.so 拷贝到 /usr/local/lib 目录下:
将测试文件 main.c 文件(详见我的另一篇文章《线性表之双向链表实验》)中的如下一行:
修改为:
此时,还需要将动态库文件所在目录添加到 /etc/ld.so.conf 文件里:
执行动态链接库管理命令,让动态链接库为系统所共享:
使用动态库编译测试文件:
完整的命令如下:
之所以省略了 -I/usr/local/include,这是因为动态库的头文件 dlinklist.h 位于 /usr/local/include 目录下,如果在其它目录,则必须指定。
libdlinklist.so
libdl.so
libc.so
注意:当动态库与静态库重名时,优先链接到动态库。
三、动态库依赖
1、linkstack.h 文件
详见我的另一篇文章《栈的链式存储实验》。
2、linkstack.c 文件
详见我的另一篇文章《栈的链式存储实验》。
生成 liblinkstack.so 动态库文件:
将头文件 linkstack.h 拷贝到 /usr/local/include 目录下:
将动态库文件 liblinkstack.so 拷贝到 /usr/local/lib 目录下:
将测试文件 main.c 文件(详见我的另一篇文章《栈的链式存储实验》)中的如下一行:
修改为:
使用动态库编译测试文件:
其中,-l 参数是调用库文件。注意,这里有个依赖的先后顺序。
Copyright © 2005-2023 by www.ricensoftwares.com.cn All Rights Reserved.