欢迎光临散文网 会员登陆 & 注册

C语言如何制作库文件

2023-05-05 22:40 作者:秋名山西  | 我要投稿

库是一组预先编译好的函数的集合,这些函数都是按照可重用的原则编写的。标准库的存放位置为/lib/或者usr/lib目录中。

库文件的命名:总是以lib开头,随后的部分指明是什么库,例如libc是c库,libm是数学库等。文件名的最后部分以.开始,然后给出库文件的类型:

.a:表示传统的静态函数库

.so:代表共享函数库

这条命令要求编译文件fred.c,将编译产生的文件名命名为fred,并且除了搜索标准的C语言函数库外,还要搜索数学库libm.a解决函数引用问题。虽然函数库文件存放在标准的路径之下,但是也可以使用-L为编译器指明需要增加的函数库搜索路径。

这条命令用/usr/openwin/lib目录中的libx11库来编译和链接程序x11fred.

即:

上文所说的-lx11,指的就是需要依赖libx11库。使用-l(小写L)的形式的好处是:如果动态库存在的情况下,会优先使用动态库。


静态库:

静态库也称为归档文件:archive,按照惯例这种类型的文件都以.a结尾。

创建静态库文件分三步:

1、分别创建为每一个函数创建一个源文件。

2、使用gcc -c 命令将源文件编译成为.o文件,因为此时的两个源文件并不能组成程序。

3、检查两个源文件准确无误后,使用下列命令对其进行打包:

xxx.o表示需要打包的.o文件,可以是多个。

4、为库文件生成内容表

这样,库文件就能正常使用了。


静态库的缺点:

多个运行中的应用程序同事使用同一个函数库的函数时,内存中就会存在同一函数的多个副本,而且在程序文件自身中也同时存在多份同样的副本,这将消耗大量宝贵的内存和磁盘空间

共享库

共享库的保存位置与静态库是一样的,但共享库有不同的文件名后缀。当一个程序使用共享库时,他的链接方式是这样的:

程序本身不再包含函数代码,而是引用运行时可访问的共享代码。当编译好的程序被装载到内存中执行时,函数引用被解析并产生对共享库的调用,如果有必要,共享库才会被加载到内存中。

通过这种方式,系统可以只保留共享库的一份副本供许多应用程序同时使用,并且在磁盘上也保留一份,另一份的好处是共享库的更新可以独立于依赖他的应用程序。

C语言如何制作库文件的评论 (共 条)

分享到微博请遵守国家法律