在跳入动态库之前,请阅读有关静态库的信息。
静态库包含在编译时绑定到程序的功能。 另一方面,动态库或共享库在加载应用程序时加载,并且绑定在运行时发生。 动态链接的库是包含其他模块可以使用的功能和数据的模块。 它还可以定义两种类型的函数:导出函数和内部函数。 导出的函数可以由其他模块调用,也可以从定义它的动态链接库中调用。
通过使用库,您将不必编写将一遍又一遍使用的函数。 尽管静态库占用更多空间,但是如果您想准备好所有东西,则应该使用它们。 而要运行程序,则需要动态库。 如果只想使用某些功能并节省空间,则动态库允许您指定和使用所需的功能。 更新时,您也不需要重新编译。这样,您现在知道库如何工作,它们将非常有用。
您需要收集要包含的所有功能,并将功能原型添加到头文件中,然后进行编译!
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
编码愉快!