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


15

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

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

arch -i386 theApp.app

しかし、私はarch: /Applications/theApp.app isn't executableエラーで試しました。ファイルのアクセス許可を確認したところ、drwxrwxr-x実行可能になっているはずです。
編集:@ gd1が言ったように、theApp.appはフォルダ(OSXではバンドルと呼ばれると思います)であり、実行可能ではありません。

しかし、まだ回避策が必要です:
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ビットカーネルとの互換性」についてです:

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

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


OS Xのバージョンは何ですか?
-skub

@skub 10.7.2。:)
クジュリー

1
私はOSXをあまりよく知りませんが、「arch」は実行可能ファイルが引数として与えられることを期待しており、theApp.appはフォルダです(ご覧のように、「d」の文字が許可文字列の先頭)。内部の実行可能ファイルを検索し、「コンテンツ> MacOS」の下にあると考えています
-gd1

@ gd1 ya、あなたは正しい!今、32ビットモードでそれを実行する方法を疑問に思います。:)
クジュリー

回答:


19

OS Xには、全体的な64/32ビットモードがありません。個々のプログラムは、起動時に「最良」と思われるモードで実行されます。保持3し、2としてコンピュータブーツは、32ビットモードでのカーネルの実行を行いますが、これはモードプログラムがで実行するものとは何の関係もありません。OS Xは喜んで64ビットカーネルで32ビットモードでプログラムを実行することができ、またはプログラム32ビットカーネルの64ビットモード。

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

$ 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ビットモードで実行するには、保持32て起動するか、コマンドで永続的に実行しますsudo systemsetup -setkernelbootarchitecture i386(AppleのKB#HT3773を参照)。

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

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


"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、私が欲しいものです!それでは試してみます!ありがとう!! :D
クジュリー

残念ながら、Components lostエラーで失敗しました。:(ログを自分のQに貼り付けます。事前に感謝します!
-Kjuly

1
そのログは、カーネル拡張(.kext)をロードしようとしていることを示しています。これは、カーネルモード重要であることを意味し(基本的にカーネルプラグインに似ています)、「requested architecture / executable not found」ビットはカーネルが実行されているモード。最初に、kextにどのようなモードがあるかを調べますfile /tmp/xlpppoe.kext/Contents/MacOS/xlpppoe(または、代わりに/Applications/Èó™ËÆØ.app/xlpppoe.kextにあります)。32ビットのみの場合、カーネルを32ビットモードで起動する必要があります(こちらを参照)。
ゴードンデイヴィソン

こんにちは@Gordon、情報を質問に入れました。たぶん、あなたはあなたの答えの一部として私の最後の部分を使うことができます。:pとにかくありがとう!!
クジュリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.