C编程中的静态库-用途,原因和使用方法。

无论您是初学者还是经验丰富的程序员,都在编写很多代码。 而且,您编写的代码越多,这些程序在计算机上占用的空间就越大。 也可能很多代码重复,并且您使用的是相同的函数。

随着程序变得越来越复杂,您必须在文件中放入更多代码-计算机运行并执行该文件所花费的时间更长。

这就是使用的方便之处-为了加快程序的运行和执行速度,您需要将程序分成多个块,这样可以更轻松地进行管理(其他程序员可以通读它)

在将部分代码放入单独的目标文件中时,您可以创建一个仅引用那些目标文件的库,因此您不必每次都需要完成特定任务或需要某个变量时就重写代码。 。

“库是包含多个目标文件的文件,可以在程序的链接阶段用作单个实体” –链接

C中使用两种类型的库:

  • 静态的
  • 动态(或共享)

在本文中,我们将研究静态库,并了解它们如何工作,如何创建和使用它们。

静态库如何工作

如前所述,这是编译过程的步骤之一,您的编译器正在使用目标文件创建源文件。

静态库(也可以称为存档)类似于.zip存档-目标文件的集合。

链接器浏览目标文件列表以连接在一起时,它会收集无法链接的符号列表。 链接完所有能够找到的对象后,就可以在库中找到另一个地方了。 如果在库中列出的目标文件之一中找到未解析的符号,则链接器将使用该代码(用于所需的函数或变量),将其复制并用于创建可执行文件。

如何创建静态库

要创建静态库,我们需要具有要包含在库中的函数的目标文件。

第1步 :创建目标文件-在这一步中,我们使用标志-c:

gcc -c file1.c

该命令将创建yourfile.c的二进制目标文件:

file1.o

第2步 :使用以下命令完成静态库的创建:

ar -rc libcreate.a file1.o file2.o file3.o

我们来剖析这个命令:

ar-是创建“存档”的程序

r-标志指示如果较早创建的较早的目标文件用新的目标文件替换

c —创建库(如果尚不存在)的标志

libcreate.a —我们要在其中引用对象文件file1.o,file2.o和file3.o的静态库的名称

第3步 :创建库存档后,我们需要对其进行索引-这将有助于编译器在浏览库时提高速度

执行此操作的命令是:

ranlib libcreate.a

使用静态库

创建静态库后,您可能需要查看库中包含哪些对象文件。 您可以使用以下命令执行此操作:

ar -t libcreate.a

要开始使用静态库,我们需要确保链接器“知道”它的存在。 编译.c文件时,我们需要添加库名-通过使用’-l’标志来完成:

gcc main.c -L。 -lcreate -o测试

该命令将获取main.c文件,并告诉链接器我们要使用静态库libcreate.a(请注意,我们删除了文件名lib和.a的开头,链接器会自动添加这些部分)

-L标志表明可能有其他库不在常规位置(存储库的位置)列出,而是在当前目录中列出(这就是为什么我们需要插入“。”的原因)