我正在最近学习关于Mach-O文件的一些知识。当我学习懒惰符号&非懒惰符号时:谁确定符号是懒惰还是非懒惰?为什么?是什么让一个符号变成懒惰或非懒惰?
我想这可能是编译器做...
更新: 我找到了一个答案关于我的问题,也许这是事实:
懒绑定由-z选项控制链接器,ld
。该选项将关键字作为参数;关键字包括(其中包括):
lazy
生成可执行文件或共享库,标记它告诉动态链接程序推迟函数调用解决的地步时,被调用的函数(延迟绑定),而不是在加载时间。
now
生成可执行文件或共享库,标记它告诉动态连接器解决所有的符号时,程序启动时,或共享库链接到使用dlopen()
,而不是推迟函数调用分辨率该函数首次被调用的时间点。
延迟绑定是默认设置。如果您使用的是qcc
(正如我们推荐的那样),请使用-W选项将-z选项传递给ld。例如,指定-Wl
,-zlazy
或-Wl
,-znow
。
参考:Optimizing the runtime linker
相关问题:Does Clang/GCC really support a delay loading feature?