C语言中的静态库:既豪华又必要

图书馆提供了几个有益的功能。 在构建大型程序时,尤其是与多个人一起构建时,编译时间可能会增加。 使用对不经常修改的目标文件进行排序和索引可以显着减少编译时间。

静态库实质上是对象文件的集合(认为是将不同的功能集文件编译成机器代码),这些文件与您使用其编译的程序链接。 如果您不理解CI中的编译步骤,强烈建议您阅读我写的这篇文章。 使用库会将链接程序的多步骤过程(查找,打开,读取,关闭每个文件)变成单个实体,以供链接程序扫描和链接程序。 链接器仍将程序中函数的实例替换为其实际的目标代码。

在C中创建静态库非常容易。 我们将使用带有rc标志的linux命令行工具ar创建库,使用ranlib索引我们的库,并使用带有-c标志的gcc将c文件编译或转换为目标代码, -fPIC发出与位置无关的代码(不是静态库所需,但这是一个好习惯)。

在上面,您可以看到我们正在首先在库中编译所需的C文件。 这可以通过通配符自动实现,但稍后会介绍更多。 接下来,我们使用ar rc创建包含所有目标文件的库。 然后,我们使用标志-t运行ar命令以查看库的内容。 但是,我们还没有完成!

我们最终必须索引我们的库。 对库建立索引可以使编译器加快其在库中查找符号的速度,并确保这些符号的顺序无关紧要。 符号只是库中使用的函数,变量等。 使用我们的最终命令ranlib ourlib.a可以为其建立索引。

使用我们的库非常简单。 使用gnu社区编译器gcc我们可以使用标志-L . 指定非标准库目录。 通常,gcc会在\lib\usr\lib等目录中查找库。 指定我们的当前目录. 允许gcc查找我们制作的新库文件。 我们将进一步需要使用-l wemade指定我们的库,然后使用-o isupper创建我们的输出文件,命令如下:

gcc main.c -L . -l wemade -o isupper

尽管编译稍微复杂一点,但是它要快得多,尤其是在处理大文件时。 希望您喜欢有关C中静态库的简短教程。请随时在Twitter上关注我:

贝内特(@ bennett_32)| 推特

贝内特(@ bennett_32)的最新推文。 精益创业者ΩXamarin和.NET热心Ω学生…

twitter.com