DYLD

在iOS和macOS系统中,几乎所有的程序都会用到动态库,而动态库在加载的时候都需要用dyld进行链接。dyld全称是dynamicloader,它是完全开源的,不过苹果官方关于dyld的文档很少。App可执行文件在内核加载后,根据Mach-O加载命令中LC_LOAD_DYLINKER命令获取dyld路径(位于/usr/lib/dyld),然后加载dyld,加载完成后dyld进行初始化、缓存加载、依赖库加载等等工作,最后返回Appmain()函数地址,main()函数调用后,就进入了程序的入口。ThedynamicloaderforDarwin/OSXiscalleddyld,anditisresponsibleforloadingallframeworks,dynamiclibraries,andbundles(plug-ins)neededbyaprocess.Appledeveloperdocument:DynamicLoaderReleaseNotes整体流程已知objc的初始化入口函数_objc_init(如果还不了解objc,请自行查询相关资料补充)是由libSystem调
dyld 2017年09月01日 1,225次浏览