使用和创建C静态库

随着C程序的发展,您开始具有许多不同的功能。 这会变得凌乱! 当需要在编译过程中进行链接时,计算机将不得不处理许多目标文件,这使其效率低下。

减少总时间并提高效率的一种方法是利用C库。 AC库包含可链接并用于执行特定任务的功能列表。 无需调用许多不同的文件,您可以引用单个库。 使用此方法将优化编译过程,其原因有两个:

1)由于C库已建立索引,因此很容易找到所需和应链接的符号,例如函数和变量。

2)C库将所有功能放在一个位置,从而在链接过程中打开的文件较少。

UNIX系统允许我们创建2种C库。 静态共享 。 (在此博客文章中,我将只讨论静态库)

静态库是直接链接到可执行文件中的函数的集合(如前所述)。 因此,当需要运行该文件时,您只需要一个文件。 之所以称其为“静态”,是因为可执行文件现在将保持不变,除非您要操纵该库并重新对其进行编译。

要创建静态库,您想使用2个命令。 第一个是:

ar命令是“ archiver”的缩写,它用于创建静态库“ sonialib.a”。该命令后的* .o仅指示该库中应包含当前工作目录中的所有.o文件。 在ar之后添加的c标志告诉它创建库,无论它是否存在。 然后, r标志告诉它用新的替换旧的目标文件。

创建存档后,便需要对库进行索引。 这是使用ranlib命令完成的:

创建存档后,您现在可以在程序中使用它了。 如前所述,要使用库,您需要在编译期间将其链接。

此命令行将编译您的c文件,并使用sonialib中找到的所有必要符号。 –L。 标志告诉链接器,可以在任何给定目录中找到sonialib。

在编译过程中,使用静态库是更有效的选择,因为所有目标文件都直接放置在可执行文件中。 但是,如果您要对程序进行更改,那么它通常会被认为是效率低下的库,因为每次更改时都必须重新编译和链接文件。