Ich habe eine App, die nur eine 32bit Version gibt. Um es zu benutzen, habe ich vor dem Booten des Mac 2
& 3
gedrückt, damit es im 32-Bit-Modus läuft. Einige Apps (64-Bit-Version, die zuvor installiert wurde) stürzen in diesem Modus jedoch immer ab.
Ich habe zufällig eine Lösung gefunden, die eine 32-Bit-App im 64-Bit-System ausführt:
arch -i386 theApp.app
Aber ich habe es mit arch: /Applications/theApp.app isn't executable
Fehler versucht . Ich habe die Dateiberechtigung überprüft und festgestellt drwxrwxr-x
, dass sie ausführbar sein sollte.
EDIT : Wie @ gd1 sagte theApp.app ein Ordner ist (es heißt Bündel in OSX glaube ich) und so ist es nicht ausführbar.
Aber ich brauche noch eine Problemumgehung:
Wie kann ich meine 32-Bit-App in meinem 64-Bit-System korrekt ausführen?
EDIT : Ich kann die App arch
jetzt mit dem Befehl öffnen (danke @GordonDavisson):
arch -i386 /Applications/theApp.app/Contents/MacOS/theApp
Die App wird jedoch mit dem folgenden Components lost
Protokoll ausgeführt:
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).
Übrigens, das 闪讯.app
(ich hasse es !! Aber ich brauche es ..) wird verwendet, um eine Verbindung zu einem Netzwerk an meiner Universität in China herzustellen.
EDIT :
Kjuly@MacBook-Pro:~$ file /Applications/闪讯.app/Contents/MacOS/闪讯
/Applications/闪讯.app/Contents/MacOS/闪讯: Mach-O executable i386
und
Kjuly@MacBook-Pro:~$ file /Applications/闪讯.app/xlpppoe.kext/Contents/MacOS/xlpppoe
/Applications/闪讯.app/xlpppoe.kext/Contents/MacOS/xlpppoe: Mach-O object i386
Es scheint, dass es nur 32-Bit ist und vom 32-Bit-Kernel abhängt. Oh, ich bin sooo traurig. :(
Hier sind einige Infos, die ich mit Hilfe von @GordonDavisson bekommen habe, vielleicht braucht es jemand anderes.
Das DOC zeigt einige Methoden zum vorübergehenden Starten mit dem 32-Bit-Kernel, um ältere Kernel-Erweiterungen für die Software oder Hardware von Drittanbietern zu verwenden.
Und es geht um "Kompatibilität mit dem 64-Bit-Kernel" :
Software von Drittanbietern (z. B. ein Virtualisierungsmodul) oder Hardware (z. B. eine PCIe-Karte), die auf einer mit Mac OS X Server 10.5 kompatiblen Kernel-Erweiterung basiert, funktionieren möglicherweise nicht auf Macs, die den 64-Bit-Kernel verwenden Mac OS X 10.6. Wenden Sie sich an den Hersteller der Software oder Hardware, um eine aktualisierte Kernel-Erweiterung zu erhalten, die mit dem 64-Bit-Kernel in Mac OS X Server 10.6 kompatibel ist.
Um dieses Problem zu umgehen, können Sie vorübergehend den 32-Bit-Kernel starten, um ältere Kernel-Erweiterungen für Ihre Software oder Hardware von Drittanbietern zu verwenden.
Antworten:
OS X verfügt nicht über einen 64/32-Bit-Modus. Es führt einzelne Programme in dem Modus aus, der beim Start als "am besten" erscheint. Wenn Sie 3und 2gedrückt halten, wird der Kernel beim Starten des Computers im 32-Bit-Modus ausgeführt. Dies hat jedoch nichts mit dem Modus zu tun, in dem Programme ausgeführt werden. OS X kann problemlos Programme im 32-Bit-Modus unter einem 64-Bit-Kernel oder Programmen ausführen im 64-Bit-Modus unter einem 32-Bit-Kernel.
Wenn Ihr Programm nur 32-Bit-Code enthält, wird es im 32-Bit-Modus ausgeführt, ohne dass Sie etwas Besonderes tun müssen. Sie können dies überprüfen, indem Sie den
file
Befehl für die ausführbare Datei ausführen (im Allgemeinen in AppName.app/Contents/MacOS/AppName. Hier einige Beispiele:... was mir sagt, dass Chess.app 32-Bit- und 64-Bit-Intel-Code enthält ("i386" bzw. "x86_64"), VLC.app 32-Bit-Intel und 32-Bit-PowerPC ("ppc") Code und Adobe Reader enthält nur 32-Bit-Intel-Code.
Einige dieser Informationen (wenn auch nicht so ausführlich) können Sie auch aus dem Systembericht von System Information (im Abschnitt Software -> Anwendungen) abrufen.
Wenn eine App sowohl 32- als auch 64-Bit-Code enthält, können Sie im Fenster "Informationen" des Finders auswählen, welcher Code für die App verwendet werden soll (es wird ein Kontrollkästchen "Im 32-Bit-Modus öffnen" angezeigt), oder Sie verwenden das
arch
Befehl auf der ausführbaren Datei (zBarch -i386 /Applications/theApp.app/Contents/MacOS/theApp
). Normalerweise sollte dies jedoch nicht erforderlich sein, da das Betriebssystem den besten Modus gut auswählt.(Ein Fall, in dem Sie die Modusauswahl manuell außer Kraft setzen müssten, ist aus Gründen der Plugin- oder Bibliothekskompatibilität. Wenn Sie eine 32- und 64-Bit-App haben, aber nur ein 32-Bit-Plugin oder eine 32-Bit-Bibliothek laden können müssen, müssen Sie um die Ausführung des Programms im 32-Bit-Modus zu erzwingen.)
Wenn Sie 64-Bit-Programme haben, die nicht direkt unter einem 32-Bit-Kernel ausgeführt werden, haben sie entweder einen seltsamen Fehler, oder es passiert etwas, das noch seltsamer ist. Wenn Sie die spezifischen Details angeben, können wir möglicherweise herausfinden, was tatsächlich falsch läuft.
BEARBEITEN: Es sieht so aus, als wäre die App nur 32-Bit und installiert eine 32-Bit-Kernel-Erweiterung (kext). Während der 32-Bit-App-Teil in jedem Kernel-Modus ausgeführt werden kann, können die 32-Bit-Texte nur in einen 32-Bit-Kernel geladen werden (es ist wie ein Plugin für den Kernel). Sie können den Kernel im 32-Bit-Modus ausführen, indem Sie gedrückt halten 3und 2beim Start oder permanent mit dem Befehl
sudo systemsetup -setkernelbootarchitecture i386
(siehe Apples KB # HT3773 ).Beachten Sie, dass Sie keine besonderen Maßnahmen ergreifen müssen, um die App im 32-Bit-Modus zu öffnen. Da dies das einzige enthaltene Format ist, wird es in diesem Modus ausgeführt, unabhängig davon, wie es gestartet wird (insbesondere ist der
arch
Befehl nicht erforderlich).Wenn Sie 64-Bit-Apps haben, die unter einem 32-Bit-Kernel nicht ordnungsgemäß ausgeführt werden, handelt es sich um ein separates Problem, und ich würde empfehlen, eine weitere Frage dazu zu stellen.
quelle
"One instance where you would need to manually override the mode selection is for plugin or library compatibility"
In diesem Fall muss ich meine App möglicherweise nur im 32-Bit-Modus ausführen. Das Programm, das immer abstürzt, istMS Word
(ich verwende jetzt stattdessen LaTeX), ich bin nicht sicher, ob der 32-Bit-Modus den Absturz verursacht oder nicht, nur eine persönliche Vermutung. Undarch -i386 /Applications/theApp.app/Contents/MacOS/theApp
das will ich! Ich werde es dann versuchen! Vielen Dank!! : DComponents lost
Fehler fehlgeschlagen . :( Ich füge das Log in mein Q ein. Danke im Voraus!file /tmp/xlpppoe.kext/Contents/MacOS/xlpppoe
(oder er kann stattdessen in /Applications/Èó°ËÆØ.app/xlpppoe.kext sein). Wenn es sich nur um 32-Bit handelt, müssen Sie den Kernel im 32-Bit-Modus starten (siehe hier ).