c++ - stdio.h对应的库文件是动态链接的还是静态链接的
问题描述
我的意思是数学库是动态链接的。所以我在想对应于 stdio.h(printf 和 scanf 代码)的库文件是动态链接的?此外,当我们包含 stdio.h 时,其中声明的所有函数都是在运行时添加的,还是只添加那些使用的函数?
解决方案
在 Linux 和许多其他 *nix 系统上,您通常会动态链接 C 标准库,它是默认的gcc
and clang
。但是,如果您愿意,您仍然可以自由地进行静态链接。这完全取决于您的系统、环境、工具链和个人设置。
此外,当我们包含 stdio.h 时,其中声明的所有函数都是在运行时添加的,还是只添加那些使用的函数?
包含标题不会链接任何内容。C 标准库由 C编译器自动链接,否则如果您使用在例如stdio.h
.
也就是说,通过动态链接,整个库在动态链接器需要时在运行时加载——无法加载单个函数。动态链接的好处是操作系统只需要这个库的一个副本,不管有多少进程链接到它。该库可以映射到每个需要它的进程地址空间中。这可以在运行时节省 RAM。
推荐阅读
- mysql - 插入不重复
- python-3.x - partial dependence plot without using PDP package
- php - 为 WordPress 内容中的标签添加 WordPress 分类标签
- java - 了解不同的坐标系,Tiled,Stage,Screen,
- python - what does black lines on a seaborn barplot mean?
- mysql - Laravel - Access denied
- javascript - 你如何使用 React Hooks 处理外部状态?
- linq - 按大小写顺序转换为 Linq 语句
- powershell - 需要递归地将单个文件复制到所有子文件夹
- java - 我应该忽略 GUI 类的自动代码审查错误吗?