2013-02-21 64 views
4

我需要在OSX上的32位可執行文件上運行DTrace。我有兩臺機器,都運行OSX 10.8.2。對他們中的一個,/usr/lib/dtrace/libdtrace_dyld.dylib是一個胖二進制,另一方面,它是不是:OSX上的32位DTrace

/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 

哪裏都來自這兩個?我怎樣才能「正式」得到胖子,即不需要從另一臺機器上覆制它呢?

這是當我嘗試運行32位可執行文件,僅64位dylib DTrace的,順便說一句會發生什麼:

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

回答

2

在Mac OS X ML使用DTrace庫是脂肪二進制( i386,x86_64)。你的第二臺機器缺少32位,因爲有人刪除它。該系統中可能有一個「優化器」系統運行。

我的機器上的lib的SHA(shasum /usr/lib/dtrace/libdtrace_dyld.dylib)是0722f971d9999245cda234ba5fd3119820fa348a。我已經在其他幾臺機器上測試過它,並且它匹配了。它也與配備全新安裝的Mac OS X ML的機器相匹配。這意味着可以複製它。

恢復它的唯一方法是從備份還原或重新安裝系統。

+0

什麼樣的優化器會這樣做?這是一臺非常新的機器,我從來沒有故意運行過這樣的事情。 – 2013-02-27 21:25:14

+0

哦,你知道,刪除「未使用」的本地化,以優化磁盤空間。我會盡力找到「乾淨」的系統並更新答案。 – Kentzo 2013-02-28 04:29:21

+0

我絕對相信,我從來沒有(明知)運行這樣的程序,這是一個星期的機器。 – 2013-02-28 16:58:28

相關問題