2013-02-21 2 views
4

Мне нужно запустить DTrace в 32-разрядных исполняемых файлах на OSX. У меня две машины, работающие под управлением OSX 10.8.2. На одном из них, /usr/lib/dtrace/libdtrace_dyld.dylib является жир двоичный, с другой стороны это не так:32 бит DTrace на OSX

/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 

Где эти два взялось? Как получить тучную «официально», т. Е. Не просто скопировать ее с другой машины?

Это то, что происходит, когда я пытаюсь запустить DTrace на 32-битные исполняемые с 64-битной только dylib, кстати:

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

ответ

2

Библиотека DTrace на Mac OS X ML является жир двоичный (i386, x86_64). У вашей второй машины не хватает 32 бит, потому что кто-то ее удалил. Вероятно, один из этих «оптимизаторов» системы был запущен в системе.

SHA (shasum /usr/lib/dtrace/libdtrace_dyld.dylib) на моей машине - 0722f971d9999245cda234ba5fd3119820fa348a. Я тестировал его на нескольких других машинах, и это соответствовало. Он также соответствовал машине со свежей установкой Mac OS X ML. Это означает, что все в порядке, чтобы просто скопировать его.

Единственный способ восстановить его - либо восстановить его из резервной копии, либо переустановить систему.

+0

Какой оптимизатор это сделает? Это очень новая машина, и я никогда не знала, что это такое. –

+0

oh вы знаете, что удаляет «неиспользуемые» локализации, чтобы оптимизировать дисковое пространство. Я попытаюсь найти «чистую» систему и обновить ответ. – Kentzo

+0

Я абсолютно уверен, что я никогда (заведомо) не запускаю такую ​​программу, и это машина, которая является неделей. –

Смежные вопросы