让我们创建一个动态库!

图片来自:https://www.iab.com/wp-content/uploads/2017/05/Dynamic_Variations-1000×305.png

在跳入动态库之前,请阅读有关静态库的信息。

静态库包含在编译时绑定到程序的功能。 另一方面,动态库或共享库在加载应用程序时加载,并且绑定在运行时发生。 动态链接的库是包含其他模块可以使用的功能和数据的模块。 它还可以定义两种类型的函数:导出函数和内部函数。 导出的函数可以由其他模块调用,也可以从定义它的动态链接库中调用。

通过使用库,您将不必编写将一遍又一遍使用的函数。 尽管静态库占用更多空间,但是如果您想准备好所有东西,则应该使用它们。 而要运行程序,则需要动态库。 如果只想使用某些功能并节省空间,则动态库允许您指定和使用所需的功能。 更新时,您也不需要重新编译。这样,您现在知道库如何工作,它们将非常有用。

您需要收集要包含的所有功能,并将功能原型添加到头文件中,然后进行编译!

  gcc -Wall -Werror -Wextra -pedantic -fPIC * .c -shared -o libholberton.so 

让我们分解一下:

  • -Wall -Werror -Wextra -pedantic:您应该使用的标准错误检查
  • fPIC:这是代表“位置独立代码”的共享库的要求
  • * .c:选择所有c文件
  • -shared:创建一个共享库,其前缀为lib ,后缀为.so ,代表共享库。
  • -o:将输出放在文件中

用法:

  • 使用此命令可以查看库中的功能。
  • -D:这是指数据初始化部分中的符号
  • 更新您的LD_LIBRARY_PATH以包括可找到您的库的目录
  nm -D libholberton.so 
  • 编译程序并包含-L。 包括您图书馆的路径
  • 排除lib前缀和.so后缀以包括您的库
  • 使用“ ./”运行程序
  gcc -L。  -o main.c程序.c -lholberton 
。/程序
多田! 您创建了一个动态库!

如果您想了解有关动态链接库的更多信息,请单击此处:

http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

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

http://cs-fundamentals.com/tech-interview/c/difference-between-static-and-dynamic-linking.php

编码愉快!