У меня есть приложение, которое существует только в 32-битной версии. Чтобы использовать его, я обычно нажимал 2
& 3
вместе перед загрузкой Mac, чтобы он работал в 32-битном режиме. Тем не менее, некоторые приложения (64-битная версия, которая была установлена ранее) всегда будут зависать в этом режиме.
Мне довелось увидеть решение, которое запускает 32-битное приложение в 64-битной системе:
arch -i386 theApp.app
Но я попробовал с arch: /Applications/theApp.app isn't executable
ошибкой. Я проверил разрешение файла и он показал drwxrwxr-x
, что он должен быть исполняемым, а?
РЕДАКТИРОВАТЬ : Как сказал @ gd1, App.app - это папка (я думаю, в OSX она называется bundle), и поэтому она не является исполняемой.
Но мне все еще нужен обходной путь:
как правильно запустить 32-битное приложение в моей 64-битной системе?
РЕДАКТИРОВАТЬ : я могу открыть приложение arch
сейчас с помощью команды (спасибо @GordonDavisson):
arch -i386 /Applications/theApp.app/Contents/MacOS/theApp
Тем не менее, приложение работает с Components lost
ошибкой, журнал показан ниже:
Kjuly@MacBook-Pro:/Applications$ arch -i386 闪讯.app/Contents/MacOS/闪讯
2012-01-08 16:17:53.381 闪讯[472:1107] isActive: ioctl to kernel socket error 2 ,No such file or directory
2012-01-08 16:17:53.436 闪讯[472:1107] The AppPath = /Applications/闪讯.app
2012-01-08 16:17:53.437 闪讯[472:1107] The src path = /Applications/Èó™ËÆØ.app/xlpppoe.kext
2012-01-08 16:17:58.892 闪讯[472:1107] Set Driver Ok...
/tmp/xlpppoe.kext failed to load - (libkern/kext) requested architecture/executable not found; check the system/kernel logs for errors or try kextutil(8).
Кстати, 闪讯.app
(я ненавижу это! Но мне это нужно ..) используется для подключения к сети в моем университете в Китае.
РЕДАКТИРОВАТЬ :
Kjuly@MacBook-Pro:~$ file /Applications/闪讯.app/Contents/MacOS/闪讯
/Applications/闪讯.app/Contents/MacOS/闪讯: Mach-O executable i386
и
Kjuly@MacBook-Pro:~$ file /Applications/闪讯.app/xlpppoe.kext/Contents/MacOS/xlpppoe
/Applications/闪讯.app/xlpppoe.kext/Contents/MacOS/xlpppoe: Mach-O object i386
Кажется, это только 32-разрядная версия и зависит от 32-разрядного ядра. О, я ооочень грустный. :(
Вот некоторые сведения, которые я получил с помощью @GordonDavisson, возможно, кому-то еще это понадобится.
В DOC показывает некоторые методы , чтобы временно запускались с 32-битным ядром использовать старые расширения ядра для программного или аппаратного обеспечения сторонних производителей .
И речь идет о «Совместимости с 64-битным ядром» :
Программное обеспечение сторонних производителей (например, механизм виртуализации) или аппаратное обеспечение (например, карта PCIe), использующее расширение ядра, совместимое с Mac OS X Server v10.5, может не работать на компьютерах Mac, использующих 64-разрядное ядро в Mac OS X v10.6. Обратитесь к поставщику программного или аппаратного обеспечения для получения обновленного расширения ядра, которое работает с 64-разрядным ядром в Mac OS X Server v10.6.
В качестве обходного пути вы можете временно запустить 32-разрядное ядро, чтобы использовать более старые расширения ядра для стороннего программного или аппаратного обеспечения.
Ответы:
OS X не имеет общего 64/32 битного режима; он запускает отдельные программы в любом режиме, который кажется «лучшим» при запуске. Удержание 3и 2при загрузке компьютера заставит его ядро работать в 32-битном режиме, но это не имеет никакого отношения к тому, в каком режиме запускаются программы. OS X может успешно запускать программы в 32-битном режиме под 64-битным ядром или программы в 64-битном режиме под 32-битным ядром.
Если ваша программа содержит только 32-битный код, она будет работать в 32-битном режиме без необходимости делать что-то особенное. Вы можете проверить это, запустив
file
команду на исполняемом файле (как правило, в AppName.app/Contents/MacOS/AppName. Вот несколько примеров:... который говорит мне, что Chess.app включает в себя 32-битный и 64-битный код Intel («i386» и «x86_64» соответственно), VLC.app включает в себя 32-битный Intel и 32-битный PowerPC («ppc») код, а Adobe Reader включает только 32-битный код Intel.
Вы также можете получить часть этой информации (хотя и не так подробно) из системного отчета о системной информации (в разделе «Программное обеспечение -> Приложения»).
Если приложение имеет как 32-, так и 64-битный код, вы можете выбрать, какой из них использовать в окне «Информация» в приложении Finder (будет установлен флажок «Открыть в 32-битном режиме»), или с помощью
arch
команда на исполняемый файл (напримерarch -i386 /Applications/theApp.app/Contents/MacOS/theApp
). Но обычно вам не нужно этого делать, ОС отлично справляется с выбором лучшего режима.(Один из случаев, когда вам нужно было бы вручную переопределить выбор режима, это совместимость с плагином или библиотекой. Если у вас 32- и 64-битное приложение, но оно должно быть в состоянии загрузить только 32-битный плагин или библиотеку, у вас будет заставить программу работать в 32-битном режиме.)
Если у вас есть 64-битные программы, которые не работают прямо под 32-битным ядром, у них либо есть какая-то странная ошибка, либо происходит что-то еще более странное. Если вы укажете конкретные детали, мы сможем выяснить, что на самом деле идет не так.
РЕДАКТИРОВАТЬ: похоже, что приложение является только 32-разрядным, и устанавливает только 32-разрядное расширение ядра (kext). В то время как 32-битная часть приложения может работать в любом режиме ядра, 32-битные kexts могут загружаться только в 32-битное ядро (это как плагин для ядра). Вы можете запустить ядро в 32-битном режиме, удерживая 3и 2при запуске, или постоянно с помощью команды
sudo systemsetup -setkernelbootarchitecture i386
(см. Apple KB # HT3773 ).Обратите внимание, что не нужно делать ничего особенного, чтобы открыть приложение в 32-битном режиме; поскольку это единственный включенный формат, он будет работать в этом режиме независимо от того, как он запускается (в частности,
arch
команда не нужна).Если у вас есть 64-битные приложения, которые не работают должным образом под 32-битным ядром, это отдельная проблема, и я бы рекомендовал опубликовать еще один вопрос об этом.
источник
"One instance where you would need to manually override the mode selection is for plugin or library compatibility"
в этом случае мне нужно запускать приложение только в 32-битном режиме. Программа, которая всегда дает сбойMS Word
(я использую LaTeX вместо этого сейчас), я не уверен, вызвал ли сбой 32-битный режим, просто личное предположение. Иarch -i386 /Applications/theApp.app/Contents/MacOS/theApp
это то, что я хочу! Я попробую тогда! Благодарность!! : DComponents lost
ошибкой. :( Яfile /tmp/xlpppoe.kext/Contents/MacOS/xlpppoe
(или это может быть в /Applications/ÈóËÆËÆËÆ.app/xlpppoe.kext). Если он только 32-битный, вам нужно будет запустить ядро в 32-битном режиме (см. Здесь ).