Auf Wunsch einiger PPC-Benutzer versuche ich, ein PPC-kompatibles Installationspaket für Open-Source-Software zu erstellen. Dazu muss natürlich eine PPC-Binärdatei kompiliert werden. Ich habe eine virtuelle Leopard-Maschine auf meinem Intel-Mac eingerichtet, aber ich habe keinen Zugriff auf tatsächliche PPC-Hardware.
MacPorts bietet keine C++11-Compiler an, die PPC-Binärdateien auf Intel crosskompilieren können, aber ich dachte, ich könnte dies umgehen, indem ich MacPorts vollständig unter Rosetta ausführe. Mit Rosetta 2 wäre das einfach – ich würde einfach die Terminal-App auf „Öffnen mit Rosetta“ setzen, und alles, was das Terminal ausführt, würde auch Rosetta verwenden. Dies war eine häufig empfohlene Methode zum Ausführen von Homebrew auf M1-Macs, bevor Homebrew vor einigen Wochen endlich native Apple Silicon-Unterstützung hinzufügte.
Leider scheint Rosetta 1 nicht so intelligent zu sein. Ich kann die Terminal-App auf „Öffnen mit Rosetta“ einstellen, aber dies führt dazu, dass nur die wörtliche Terminal-App Rosetta verwendet. Bash, MacPorts usw. laufen laut Activity Monitor immer noch als Intel-Prozesse.
Gibt es eine alternative Möglichkeit, Befehlszeilenprogramme – und vorzugsweise alle MacPorts – unter Rosetta auszuführen?
Vorausgesetzt, Sie befinden sich auf einem System, auf dem Rosetta v1 verfügbar ist (bis einschließlich Mac OS X 10.6), können Sie das System mit dem Befehl anweisen, das ppc-Segment einer universellen Binärdatei auszuführen arch
.
/usr/bin/arch -arch ppc /path/to/some/executable
Ich fand es nützlich, eine virtuelle Maschine in Parallels Desktop zu behalten, auf der OS X Server 10.6 mit Xcode und anderen installierten Entwicklertools für dieses Szenario ausgeführt wird, um ältere Software für veraltete PowerPC-Mac-Systeme zu kompilieren.
Auf Leopard und Snow Leopard können und sollten Sie den arch
Befehl verwenden . Leider existiert dieser Befehl nicht auf Tiger. (Nun, das arch
Programm existiert, aber es kann nur Ihre aktuelle CPU-Architektur drucken.)
Stattdessen können Sie auf Tiger die translate
Binärdatei direkt verwenden:
/usr/libexec/oah/translate /path/to/some/executable
Beachten Sie, dass Sie den vollständigen Pfad zur ausführbaren Datei angeben müssen. Wenn die ausführbare Datei nicht existiert (oder Sie den vorherigen Satz ignoriert haben), schlägt translate mit einem sehr wenig hilfreichen fehl segmentation fault
.
benwiggy
mmmmmm
Wowfunhappy
Wowfunhappy
mmmmmm
Wowfunhappy