4

我需要在 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

对比

/usr/lib/dtrace/libdtrace_dyld.dylib: Mach-O 64-bit dynamically linked shared library x86_64

这两个是哪里来的?我如何“正式”获得胖子,即不只是从另一台机器上复制它?

这就是当我尝试在 32 位可执行文件上运行 dtrace 时会发生这种情况,并且只能使用 64 位 dylib,顺便说一句:

dyld: could not load inserted library: /usr/lib/dtrace/libdtrace_dyld.dylib
4

1 回答 1

2

Mac OS X ML 上的 DTrace 库是胖二进制文件(i386、x86_64)。您的第二台机器缺少 32 位,因为有人删除了它。可能该系统“优化器”之一已在系统上运行。

我机器上的 lib 的SHA( shasum /usr/lib/dtrace/libdtrace_dyld.dylib) 是0722f971d9999245cda234ba5fd3119820fa348a. 我已经在其他几台机器上测试过它并且它匹配。它还与全新安装 Mac OS X ML 的机器相匹配。这意味着可以复制它。

恢复它的唯一其他方法是从备份中恢复它或重新安装系统。

于 2013-02-26T14:46:36.453 回答