gpt4 book ai didi

linker - 操作系统——静态链接是由链接器还是加载器完成的?

转载 作者:行者123 更新时间:2023-12-03 22:21:54 27 4
gpt4 key购买 nike

在 Abraham Silberschatz 等人的“操作系统概念”第 9 版中,作者说:

"Some operating systems support only static linking, 
in which system libraries are treated like any other object module
and are combined by **the loader** into the binary program image."

(第381页,第8.1.5节第1段第2句

我想知道链接(组合)是由LinkerLoader执行的吗?

谢谢。

最佳答案

(假设是 GNU/Linux)
我相信这是一个打字错误。静态链接由链接器完成,您将拥有一个二进制程序镜像,其中包含您的程序代码和您要链接的库的代码;加载程序将简单地加载您的程序作为一个整体。使用 Gnu C 编译器包,您可以像这样使用静态链接:gcc -static code.c
要检查结果是否确实不包含动态加载库的标记:ldd a.out 并且您会收到如下消息:not a dynamic executable

当动态链接一个库时,从技术上讲,链接器只会在生成的二进制镜像中留下一个小标记,表明还需要加载库“x”才能执行您的程序。当加载程序读取这个二进制图像时,它会注意到标记并加载库;这个 Action 永远不会在静态链接中完成,因为整个事情变成了一个大的二进制图像。

关于linker - 操作系统——静态链接是由链接器还是加载器完成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22588244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com