我知道如何使用和创建它们,但我找不到关于它是如何实现的文本,函数调用是如何发生的等等,有人可以帮我提供这些信息吗?因为我想了解它们,但不仅仅知道它是什么以及它是如何工作的
答案 0 :(得分:11)
如您所知,编译源文件时会得到目标文件。根据您的平台,其扩展名可能是.o或.obj或其他任何内容。静态库基本上是一个目标文件的集合,有点像.zip文件但可能没有压缩。 链接器在尝试生成可执行文件时尝试解析引用的符号,即定位在哪个目标文件(无论是在库中还是其他文件中)定义它们并链接他们在一起。因此,静态库还可以包含已定义符号的索引以便于此。确切的实现取决于特定的链接器和库文件格式,但基本架构如上所述。
您可能需要查看维基百科中的斜体或其他内容以获取更多信息。
答案 1 :(得分:4)
我认为wikipedia解释得很好:
在计算机科学中,静态库或静态链接库是 一组例程,外部函数和已解决的变量 在编译时调用者并通过a复制到目标应用程序中 编译器,链接器或绑定器,生成目标文件和 独立的可执行文件。这个可执行文件和编译过程 它都被称为程序的静态构建。从历史上看, 库只能是静态的。静态库要么合并 在构建/链接期间使用其他静态库和目标文件 形成单个可执行文件,或者可以在运行时加载它们 静态内存偏移量下加载的可执行文件的地址空间 在编译时/链接时确定。
答案 2 :(得分:3)
静态库纯粹是.o
文件的集合,放在一个类似zip文件(没有压缩)的存档中。当您使用它进行链接时,链接器将在库中搜索提供主程序中任何缺失符号的.o
文件,并拉入这些.o
文件以进行链接,就好像它们一样包含在命令行中,如主程序中的.o
个文件。此过程以递归方式应用,因此,如果从库中提取的任何.o
文件具有未解析的符号,则会再次搜索库以查找提供定义的其他.o
文件。