栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux 之 动态库与静态库 (2)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux 之 动态库与静态库 (2)

书接上文,本篇博客是为博客 Linux 之 动态库与静态库 (1)的案例。

例如:
在 Linux 下,自设的 newtry 目录中包含三个文件

其中,main.c 中包含 testlib.h ,即 main.c 会调用 testlib.c 中的内容。当成功运行后,会打印出 “这是一个实验程序” !
但若直接将 main.c 进行编译,其会报错,如图

此时,若想实现 main.c 调用 testlib.c 中的内容,则可通过链接 动态库 或 静态库 来实现。

1)动态库的使用实现
a、生成二进制文件
输入代码

gcc -fPIC -c testlib.c -o testlib.o 

如图中的 testlib.o 即为生成的二进制文件

b、生成动态库
输入代码

gcc --shared testlib.o ... -o libtestlib.so 

注 :代码中 ... 代表的是其他 .o 文件
如图,其中的绿色字体是为生成的动态库,且动态库名称为 testlib 。
(libtestlib.so :该库的名称为 testlib, lib 与 .so 是命名格式)

c、链接动态库
输入代码

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./

此处为了方便使用,直接采用了 “三、库的使用” 中的 “2、设置环境变量” 的操作,如图

该种方法就不用将生成的动态库保存至默认路径下了。
读者可自行尝试 “三、库的使用” 中的其他两种方法去解决库的链接,此处不再赘述。

d、库的使用
直接调用 “三、库的使用” 中的代码即可,即

gcc main.c -o mymain -ltestlib

如图,会生成 mymain 执行文件

其运行结果为

2)静态库的使用实现
a、生成二进制文件
与 1)中的 “a、生成二进制文件” 内容一致,此处不再赘述!

b、生成静态库
输入代码

ar -cr libtestlib.a testlib.o ...

注:代码中 ... 代表的是其他 .o 文件
如图,其中的 libtestlib.a 是为生成的静态库,且静态库名称为 testlib 。
(libtestlib.a :该库的名称为 testlib, lib 与 .a 是命名格式)

c、链接静态库
因为 1)中的 “c、链接动态库” 使用的是设置变量的方法,所以此步骤换另一个方法,即将库文件添加至默认路径下,如输入代码

sudo cp ./libtestlib.a /usr/lib64/

注:此处应添加的库文件是静态库,所以输入代码时需注意输入库文件的格式

d、库的使用
依旧是调用 “三、库的使用” 中的代码,具体见 1)中的 “d、库的使用”。
如图,会生成 mymain 执行文件

其运行结果依然为

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/320438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号