在使用下面的命令之后,我得到了"binds_to_weak“和"weak_defines”这两个标志。它们的意义是什么?
$ otool -hv
(体系结构armv7):Mach头魔术cputype cpusubtype caps文件类型ncmds sizeofcmds标志MH_MAGIC ARM V7 0x00执行38 4292 NOUNDEFS DYLDLINK TWOLEVEL WEAK_DEFINES BINDS_TO_WEAK PIE
发布于 2019-01-05 01:47:19
MH_WEAK_DEFINES意味着一个可执行文件有一个弱符号。弱符号是一个链接器技巧,用于避免链接到不使用的支持代码中。例如,编译器进行分析,确定应用程序仅为整数,并告诉链接器不要在浮点支持代码中进行链接。从Oracle® Solaris 11.4 Linkers and Libraries Guide (它没有讨论马赫-O):
历史上,弱符号被用来绕过插入,或测试可选功能。然而,经验表明,在现代编程环境中,弱符号是脆弱和不可靠的,因此不鼓励使用它们。
这在John Levine的Linker and Loaders的第6章中有更好的解释。
https://stackoverflow.com/questions/53692175
复制相似问题