2、静态库的制作与使用

库的介绍

◼ 库是特殊的一种程序,编写库的程序和编写一般的程序区别不大,只是库不能单独运行。
◼ 库文件有两种,静态库和动态库(共享库),区别是:静态库在程序的链接阶段被复制到了程序中;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。
所以调用了静态库的程序可以将库文件剪切到其他地方也不会影响程序的执行;而exe程序在执行的时候必须要在指定的位置能够找到动态库才能执行。
◼ 库的好处:1.代码保密 2.方便部署和分发

静态库的制作

比如设计一个算数(±*/)的动态库。首先在mystatic文件夹里面有两个文件夹,分别存放了头文件的include文件夹,以及存放了函数实现的src文件夹。
在这里插入图片描述
静态库制作流程
1、命名规则:
Linux : libxxx.a
lib : 前缀(固定)
xxx : 库的名字,自己起
.a : 后缀(固定)

2、制作

  • gcc编译生成得 .o 文件
gcc -c add.c sub.c mult.c div.c -I../include

首先将当前所在目录改变到src中,通过gcc的-c命令生成对应的.o文件,此时因为这些实现函数的文件所依赖的头文件在上一级的include文件夹中,所以要通过-I(大写i)指定头文件所在的目录,否则无法编译通过。
此时在当前的src目录中已经存在了四个.o文件。

  • 将 .o 文件打包,使用 ar 工具(archive)
    ar rcs libxxx.a xxx.o xxx.o
    r – 将文件插入备存文件中
    c – 建立备存文件
    s – 索引
    此时还是在当前的src目录中,执行一下命令,将当前目录中的.o文件进行打包,库名为calc。执行完成之后在当前目录就会有libcalc.a的文件。
ar rcs libcalc.a add.o sub.o mult.o div.o

库制作完成之后目录中的文件:
在这里插入图片描述

静态库的使用

为了更符合项目的目录习惯,现在mystatic的目录中新建一个lib目录,并且将刚才生成的.a静态库拷贝到这个目录中。
此外在mystatic中直接创建一个main.c文件,用于使用静态库。

在这里插入图片描述
此时在mystatic目录中执行一下命令:因为静态库头文件和main都不在同一个目录所以要通过-L和-I指定。
此时在当前mystatic目录中生成了app可执行文件,它在编译过程中就已经将库赋值到了main.c的编译文件中,所以app可执行文件的执行不会依赖库,可以将app文件拷贝到任何地方都能执行。

gcc -o app main.c -lcalc -L./lib/ -I./include

总结

静态库的制作使用到了-I -l 和-L三个gcc参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

VVPU

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

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

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

打赏作者

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

抵扣说明:

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

余额充值