我需要在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在32位可执行文件上运行dtrace时会发生这种情况,顺便说一下:
dyld: could not load inserted library: /usr/lib/dtrace/libdtrace_dyld.dylib
答案 0 :(得分:2)
Mac OS X ML上的DTrace库是胖二进制文件(i386,x86_64)。你的第二台机器缺少32位,因为有人将其删除了。系统中可能有一个系统“优化器”。
我机器上的lib的SHA(shasum /usr/lib/dtrace/libdtrace_dyld.dylib
)是0722f971d9999245cda234ba5fd3119820fa348a
。我已经在其他一些机器上进行了测试,并且匹配了。它还配备了全新安装Mac OS X ML的机器。这意味着可以复制它。
恢复它的唯一方法是从备份恢复它或重新安装系统。