我需要在OSX上的32位可执行文件上运行DTrace.我有两台机器,都运行OSX 10.8.2.在其中一个上,/usr/lib / dtrace / libdtrace_dyld.dylib是一个胖二进制文件,另一个不是:
/usr/lib/dtrace/libdtrace_dyld.dylib: Mach-O universal binary with 2 architectures
/usr/lib/dtrace/libdtrace_dyld.dylib (for architecture i386): Mach-O dynamically linked shared library i386
/usr/lib/dtrace/libdtrace_dyld.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
VS
/usr/lib/dtrace/libdtrace_dyld.dylib: Mach-O 64-bit dynamically linked shared library x86_64
这两个来自哪里?我如何“正式”获得这个胖子,即不用从另一台机器上复制它?
这是当我尝试使用64位只有dylib,btw在32位可执行文件上运行dtrace时会发生的情况:
dyld: could not load inserted library: /usr/lib/dtrace/libdtrace_dyld.dylib
最佳答案 Mac OS X ML上的DTrace库是胖二进制文件(i386,x86_64).你的第二台机器缺少32位,因为有人将其删除了.可能是系统中运行了一个系统“优化器”.
我机器上的lib的SHA(shasum /usr/lib/dtrace/libdtrace_dyld.dylib)是0722f971d9999245cda234ba5fd3119820fa348a.我已经在其他一些机器上进行了测试,并且匹配了.它还配备了全新安装Mac OS X ML的机器.这意味着可以复制它.
恢复它的唯一方法是从备份还原或重新安装系统.