小编Rya*_*Yan的帖子

是什么让一个符号成为惰性符号或非惰性符号?

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

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

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

延迟绑定由链接器的 -z 选项控制ld。该选项将关键字作为参数;关键词包括(除其他外):

lazy 生成可执行文件或共享库时,对其进行标记以告诉动态链接器将函数调用解析推迟到调用函数时(延迟绑定),而不是加载时。

now 生成可执行文件或共享库时,对其进行标记以告诉动态链接器在程序启动时或共享库链接到 using 时解析所有符号dlopen(),而不是将函数调用解析推迟到函数第一次出现时叫。

延迟绑定是默认设置。如果您正在使用qcc(按照我们的建议),请使用 -W 选项将 -z 选项传递给 ld。例如,指定-Wl-zlazy-Wl-znow

参考:优化运行时链接器

相关问题:Clang/GCC 真的支持延迟加载功能吗?

mach-o objective-c

5
推荐指数
1
解决办法
1619
查看次数

标签 统计

mach-o ×1

objective-c ×1