静态库介绍

当程序开始变得健壮并在计算机的不同区域中使用许多功能时,计算机要立即链接并编译它们就成了一项任务。 但是,我们注定不能减慢编译时间! 库通过将功能的所有目标文件放在一个位置来使此过程更有效。 我们可以制作两种不同类型的库:静态库或动态库。 让我们看一下静态库对大型项目有何好处。

在进入图书馆程序之前,我想快速描述文件格式。 它们采用文件名末尾的扩展名形式,例如“ .html”和“ .c”。 这是计算机将编码信息存储在磁盘上某些区域中的一种方法,因此,在尝试查找要选择的文件时,计算机可以浏览更小的数据部分。 但是有时候,您可能会拥有许多相同格式的文件,以至于搜索所有文件的速度并不快。 这就是静态库的主要效率所在。

创建

当仅使用程序所需的目标文件时,在内存中分配甚至更多的定义空间将比仅文件格式更为有效。 我们可以使用以下命令为目标文件创建一个静态库:

ar -rc static_lib.a util_file.o util_net.o util_math.o […]

“ ar”命令或“档案”用于创建,修改和提取单个文件,该文件包含其他文件的集合。 此命令添加了“ c”,如果库不存在,它将创建该库,并添加“ r”以用已包含的新文件替换旧文件。

运行以下命令也是一个好主意:

ranlib static_lib.a

某些系统可能会在ar中执行“ ranlib”命令所执行的过程,从而为目标文件创建索引,并加快符号连接。 并非所有系统都相同,并且这两个命令的规则不同,例如,在GNU程序中,该命令与ar -s相同。

用法

现在已经创建了库,我们可以在编译程序时使用它:

gcc main.o -L。 -lstatic_lib -o编

这将在静态库中查找可能在目标文件main.o中使用的符号。 -L。 标记将查找库的当前目录,这将使您的计算机更轻松地完成该过程。

最终结果将是一个正常的可执行文件,由目标文件main制成。 即使它与不带库的已编译程序相同,成功之处还是在于它建立编译过程的效率如何,对于程序使用许多不同的工具并需要尽可能有效的情况至关重要。