IOS上的LC_加载_动态链接器和自定义链接器

IOS上的LC_加载_动态链接器和自定义链接器,ios,mach-o,dyld,Ios,Mach O,Dyld,在查看Mach-O文件支持的LC_u命令列表时,我注意到LC_LOAD_DYLINKER命令,它指定要使用哪个动态链接器 在IOS上,这似乎总是指向同一个位置,即设备上的标准DYLD 我很好奇,使用这个命令,IOS上是否支持自定义链接器,如果支持,他们是否有创建链接器的指导原则?以前有人这样做过吗 iOS上没有其他公共动态链接器,也可能没有其他私有动态链接器。Mac OS X只有dyld。大多数人不会从创建新的动态链接器中获益,特别是考虑到: 加载应用程序是一项关键任务 正在加载应用程序 动态

在查看Mach-O文件支持的LC_u命令列表时,我注意到LC_LOAD_DYLINKER命令,它指定要使用哪个动态链接器

在IOS上,这似乎总是指向同一个位置,即设备上的标准DYLD


我很好奇,使用这个命令,IOS上是否支持自定义链接器,如果支持,他们是否有创建链接器的指导原则?以前有人这样做过吗

iOS上没有其他公共动态链接器,也可能没有其他私有动态链接器。Mac OS X只有
dyld
。大多数人不会从创建新的动态链接器中获益,特别是考虑到:

  • 加载应用程序是一项关键任务
  • 正在加载应用程序
  • 动态链接器必须能够在没有任何共享库的帮助下加载库,包括
    libSystem.so
    ,它公开了C标准库和POSIXAPI
  • 苹果的
    dyld
    工作正常
Linux也处于类似的情况,ELF可执行文件有一个
interp
部分,指定预期动态链接器(如果有)的路径。虽然这将允许您创建自己喜欢的动态链接器,但实际上,大多数现代x86系统只有两个:一个用于32位应用程序,另一个用于64位应用程序(实际上只是同一程序的两个版本)。由于libc必须从动态链接器加载,libc项目往往包括一个;但这项任务非常重要,周围没有太多这样的人。我只知道libc的
ld
和musl的
ld musl