当前位置: 首页 > 知识库问答 >
问题:

对应于stdio. h的库文件是动态链接还是静态链接

易宣
2023-03-14

我的意思是数学库是动态链接的。所以我认为图书馆文件对应于stdio。h(printf和scanf代码)是否动态链接?当我们包括stdio的时候。h,那么在它中声明的所有函数都是在运行时添加的,还是只添加使用的那些函数?

共有1个答案

壤驷建德
2023-03-14

在Linux和许多其他*nix系统上,您通常动态链接C标准库,这是默认的gccclang。但是如果你愿意,你仍然可以自由地静态链接。这完全取决于您的系统、环境、工具链和个人设置。

当我们包括stdio的时候。h,那么在它中声明的所有函数都是在运行时添加的,还是只添加使用的那些函数?

包含标题不会链接任何内容。C标准库由C编译器自动链接,否则,如果使用在例如stdio中声明的函数,则在链接步骤中会出现未定义的引用错误。h

也就是说,使用动态链接,当动态链接器需要时,整个库在运行时被加载——无法加载单个函数。动态链接的好处是,无论有多少进程链接到此库,操作系统都只需要该库的一个副本。库可以映射到每个需要它的进程地址空间中。这样可以在运行时节省RAM。

 类似资料:
  • 主要内容:静态链接库,动态链接库,总结我们知道,C、C++程序从源文件到生成可执行文件需经历 4 个阶段,分别为预处理、编译、汇编和链接,本节将重点围绕链接阶段,对静态链接库和动态链接库做详细的讲解。 有关链接操作的具体细节,感兴趣的读者可阅读《 到底什么是链接,它起到了什么作用?》和《 符号——链接的粘合剂》这两节。总的来说链接阶段要完成的工作,就是将同一项目中各源文件生成的目标文件以及程序中用到的库文件整合为一个可执行文件。 通过

  • 静态链接方法:静态链接的时候,载入代码就会把程序会用到的动态代码或动态代码的地址确定下来 静态库的链接可以使用静态链接,动态链接库也可以使用这种方法链接导入库 动态链接方法:使用这种方式的程序并不在一开始就完成动态链接,而是直到真正调用动态库代码时,载入程序才计算(被调用的那部分)动态代码的逻辑地址,然后等到某个时候,程序又需要调用另外某块动态代码时,载入程序又去计算这部分代码的逻辑地址,所以,这

  • 在编译Linux程序时,我们经常会看到动态链接和静态链接这两个术语。这两个术语中是我Linux的共享函数库(shared libraries)相关的。共享函数库就象Windows系统里的.dll文件,它里面包含有很多程序常用的函数。为了方便程序开发和减少程序的冗余,程序当中就不用包含每个常用函数的拷贝,只是在需要时调用系统中共享函数库中常函数功能即可。这种方式我们称之为动态链接(Dynamical

  • 要做到这一点,我应该启用哪个功能--动态链接、应用程序索引还是应用程序邀请?

  • 动态链接库(也称为DLL)是Microsoft Windows最重要的组成要素之一。大多数与Windows相关的磁盘文件如果不是程序模块,就是动态链接程序。迄今为止,我们都是在开发Windows应用程序;现在是尝试编写动态链接库的时候了。许多您已经学会的编写应用程序的规则同样适用于编写这些动态链接库模块,但也有一些重要的不同。 动态链接库的基本知识 正如前面所看到的,Windows应用程序是一个可

  • 使用clang链接AFN .a静态库 AFN静态库的生成不是重点, 以链接使用为主 一、准备 在staticLib文件夹下新建test.m文件, 代码如下 #import <Foundation/Foundation.h> #import <AFNetworking.h> int main() { AFHTTPSessionManager *manager = [AFHTTPSe