gpt4 book ai didi

objective-c - 是什么让符号变得懒惰或非懒惰?

转载 作者:行者123 更新时间:2023-12-03 23:57:23 25 4
gpt4 key购买 nike

我最近在学习一些关于 Mach-O 文件的知识。当我学习惰性符号和非惰性符号时会出现一个问题:谁确定一个符号是惰性的还是非惰性的?为什么?

我想这可能是编译器这样做......

更新:
我找到了关于我的问题的答案,也许这是事实:

延迟绑定(bind)由链接器的 -z 选项控制,ld .此选项将关键字作为参数;关键字包括(除其他外):
lazy在生成可执行文件或共享库时,将其标记为告诉动态链接器将函数调用解析推迟到调用函数时(惰性绑定(bind)),而不是加载时。
now生成可执行文件或共享库时,标记它以告诉动态链接器在程序启动时解析所有符号,或者在使用 dlopen() 链接到共享库时解析所有符号。 ,而不是将函数调用解析推迟到函数第一次被调用的时候。

惰性绑定(bind)是默认设置。如果您使用 qcc (正如我们推荐的那样),使用 -W 选项将 -z 选项传递给 ld。例如,指定 -Wl , -zlazy-Wl , -znow .

引用:Optimizing the runtime linker

相关问题:Does Clang/GCC really support a delay loading feature?

最佳答案

听起来你有 什么明白了。

至于为什么部分:

尽可能晚地做事:(a) 减少启动所需的工作,(b) 如果从不采用该执行路径,则完全避免该工作。这不仅适用于链接器,还适用于您可以延迟到需要时的任何执行。

关于objective-c - 是什么让符号变得懒惰或非懒惰?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42638283/

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