在Mac OS X上,DYLD格式的二进制可执行文件包含“加载器命令”,用于指示库加载系统如何处理文件内容。尤其是,加载器命令指示系统应从哪里搜索依赖库等。如何安装ld没有明确支持的DYLD加载器命令?
您可以通过运行“otool -l/path/to/your”来查看系统上任何二进制文件的加载器命令的完整列表/应用程序”。
一般来说,这些加载程序命令是在项目编译的链接阶段由“ld”工具设置的。
我的问题是,我需要做什么来为不支持(显然)由ld支持的公共类型加载器命令?
特别是,我想利用LC_DYLD_ENVIRONMENT加载程序命令,该命令可用于在二进制文件的加载程序命令表中指定一个字符串,该二进制文件应该作为环境变量设置加载和评估可执行文件。
我没有看到任何有利于此的ld参数。像“-sectcreate”这样的东西,但专门添加到加载器命令的内容,就是我所追求的。
我知道这是可能的,因为Mac OS X上至少有一个标准应用程序使用它:Safari。但我不知道他们是否通过二进制的后链接按钮实现了这一点,如果他们正在使用知道如何构建和链接自定义加载器命令的自定义版本的ld,或者他们正在利用这是我无法想象的ld命令的一般功能。
太棒了!谢谢。我还通过Twitter得到了一些反馈,注意指出LC_DYLD_ENVIRONMENT实际上并没有让你定义任意的环境变量,只有那些影响DYLD加载的环境变量。因此,在下面的内容中,来自Ned的LS环境建议更适合我的直接需求,但您的回答是问题要点的最合适的参考。 – danielpunkass