web-dev-qa-db-ja.com

64ビットOSX 10.7.2で32ビットアプリを実行するにはどうすればよいですか?

32ビット版しか存在しないアプリがあります。それを使用するために、Macを起動する前に23を一緒に押すので、32ビットモードで実行されます。ただし、一部のアプリ(以前にインストールされた64ビットバージョン)は、このモードでは常にクラッシュします。

私はたまたま64ビットシステムで32ビットアプリを実行するソリューションを見ました。

Arch -i386 theApp.app

しかし、Arch: /Applications/theApp.app isn't executableエラーで試しました。ファイルのアクセス許可を確認したところ、drwxrwxr-xと表示され、実行可能である必要があります。
[〜#〜] edit [〜#〜]:@ Gd1が言ったように、App.appはフォルダーです(バンドルと呼ばれます) OSXでは私は思う)そしてそれで実行可能ではありません。

しかし、私はまだ回避策が必要です:
32ビットアプリを64ビットシステムで正しく実行するにはどうすればよいですか?


[〜#〜] edit [〜#〜]:コマンドでArchを使用してアプリを開くことができます(thanks @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ビットカーネルとの互換性" についてです。

Mac OS X Server v10.5と互換性のあるカーネル拡張に依存するサードパーティソフトウェア(仮想化エンジンなど)またはハードウェア(PCIeカードなど)は、64ビットカーネルを使用するMacでは機能しない場合がありますMac OS X v10.6。 Mac OS X Server v10.6の64ビットカーネルで動作する更新されたカーネル拡張については、ソフトウェアまたはハードウェアのベンダーにお問い合わせください。

回避策として、32ビットカーネルで一時的に起動して、サードパーティのソフトウェアまたはハードウェアに古いカーネル拡張を使用できます。

15
Kjuly

OS Xには、全体として64/32ビットモードはありません。個々のプログラムは、起動時に「最良」と思われるモードで実行されます。ホールディング 3 そして 2 コンピュータが起動するとカーネルが32ビットモードで実行されますが、これはプログラムが実行されるモードとは関係ありません。OSXは、64ビットカーネルで32ビットモードでプログラムを実行したり、64でプログラムを実行したりできます。 32ビットカーネルでの-bitモード。

プログラムに32ビットコードのみが含まれている場合は、特別なことをしなくても32ビットモードで実行できます。これは、実行可能ファイル(通常はAppName.app/Contents/MacOS/AppName内)でfileコマンドを実行することで確認できます。以下にいくつかの例を示します。

$ file /Applications/Chess.app/Contents/MacOS/Chess
/Applications/Chess.app/Contents/MacOS/Chess: Mach-O universal binary with 2 architectures
/Applications/Chess.app/Contents/MacOS/Chess (for architecture x86_64): Mach-O 64-bit executable x86_64
/Applications/Chess.app/Contents/MacOS/Chess (for architecture i386):   Mach-O executable i386
$ file /Applications/VLC.app/Contents/MacOS/VLC
/Applications/VLC.app/Contents/MacOS/VLC: Mach-O universal binary with 2 architectures
/Applications/VLC.app/Contents/MacOS/VLC (for architecture i386):   Mach-O executable i386
/Applications/VLC.app/Contents/MacOS/VLC (for architecture ppc):    Mach-O executable ppc
$ file /Applications/Adobe\ Reader\ 9/Adobe\ Reader.app/Contents/MacOS/AdobeReader 
/Applications/Adobe Reader 9/Adobe Reader.app/Contents/MacOS/AdobeReader: Mach-O executable i386

...これは、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)。しかし、通常はこれを行う必要はありません。OSが最適なモードを選択するのに適しています。

(モード選択を手動でオーバーライドする必要があるインスタンスの1つは、プラグインまたはライブラリの互換性のためです。32ビットおよび64ビットのアプリがあるが、32ビットのみのプラグインまたはライブラリをロードできる必要がある場合は、プログラムを強制的に32ビットモードで実行します。

32ビットカーネルでは正しく実行されない64ビットプログラムがある場合、それらには何らかの奇妙なバグがあるか、さらに奇妙なことが起こっています。具体的な詳細を教えていただければ、実際に何が問題になっているのかを把握できる可能性があります。

編集:アプリは32ビットのみで、32ビットのみのカーネル拡張機能(kext)がインストールされているようです。 32ビットアプリの部分はどのカーネルモードでも実行できますが、32ビットkextは32ビットカーネルにしかロードできません(カーネルのプラグインのようなものです)。カーネルを32ビットモードで実行するには、 3 そして 2 起動時、またはコマンドSudo systemsetup -setkernelbootarchitecture i386を使用して永続的に(Appleの KB#HT377 を参照)。

アプリを32ビットモードで開くために特別なことをする必要はないことに注意してください。含まれている唯一の形式なので、どのように起動しても、そのモードで実行されます(特に、Archコマンドはではありません必要)。

32ビットカーネルで正しく動作しない64ビットアプリがある場合、それは別の問題であり、それについて別の質問を投稿することをお勧めします。

19
Gordon Davisson