静态库与动态库-C

C语言中最基本的概念是静态和动态库。 当您的代码获取函数来执行程序时,库中组织的函数有助于减少计算机的内存使用量。 知道为什么我们在编写C程序时为什么编写#include 以及该库是如何形成的非常重要。 本文主要侧重于创建动态库,但是如果您对创建静态库感兴趣,则可以访问我前面有关静态库的文章。

静态库本质上是在编译时链接到可执行文件的所有功能文件的集合。 这种方法的缺点是,当功能文件的数量增加时,它将增加可执行文件的大小。 同样,每次对其中一个功能进行更改时,我们都需要重新编译所有内容。 但是,静态库的最大优点之一是可执行文件的速度,这在许多行业中都是重中之重。

动态库在运行时而不是编译时链接,因此节省了大量空间。 在编译期间,库的地址位于可执行文件中,因此程序可以在运行时访问库和功能文件。 此功能非常有用,因为它可以节省空间,并且如果正在使用的功能中有任何更改,则无需重复编译。

静态库和动态库之间的主要区别

制作图书馆

$ gcc-墙-fPIC -c * .c

此步骤将为目录中所有以.c结尾的文件生成目标代码(因为我们使用通配符’*’)。

  • -Wall-标志用于显示任何警告
  • -fPIC-共享库使用的位置无关代码。
  • -c-用于创建目标文件(.o)的标志。

$ gcc -shared -o my_library.so * .o

此步骤将生成名称为my_library.so的库(例如)。

  • -shared –产生一个共享对象,然后可以将其与其他对象链接以形成可执行文件。
  • -o-用于命名操作输出的选项,在这种情况下为my_library.so
  • * .o-使用通配符(*)包含要在库中使用的当前目录中所有带有.o扩展名的文件。

要开始使用该库,

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH 

我们可以使用上面的命令将新形成的库的路径导出到环境变量LD_LIBRARY_PATH或使用ldconfig创建必要的链接并缓存到在命令行指定的目录中找到的共享库。

有关更多信息,请查看以下资源-

参考资料

ldconfig(8)– Linux手册页

LDCONFIG(8)Linux程序员手册LDCONFIG(8)

man7.org

Linux教程–静态,共享动态和可加载Linux库

YoLinux教程:静态,共享动态和可加载Linux库。 Linux Information Portal包括信息丰富的…

www.yolinux.com

http://www.geeksforgeeks.org/static-vs-dynamic-libraries/