Erstellen von universellen Binärdateien auf Mac – Erzwingen einzelner Compiler-Child-Prozess

Prost,

Bei der Firma schaffen wir einen Port unserer Spiele, und wir müssen PythonOgre kompilieren, ein Wrapper von Ogre3d für Python. Dies ist ein enormes Stück Code, insbesondere der generierte Wrapper-Code. Wir haben einen Mac Mini mit 1GB RAM.

  • Gcc-4.0 Fehler beim Aufbau _imaging Erweiterung für PIL
  • SyntaxError mit scipy.weave.inline
  • Färbender Compiler-Diagnose mit SCons
  • Auswählen der GCC-Version beim Aufbau (setup.py)
  • Gib die Include- und Runtime-lib-Verzeichnisse aus Python zurück
  • Es konnte keine Cython-erzeugte .c-Datei kompiliert werden
  • Wir haben i386 Version gebaut. Da wir nur 1 GB RAM haben, haben wir das Build-System gezwungen, nur einen Kern zu verwenden. Zweiter Prozess läuft zur gleichen Zeit eine schöne Reise in den virtuellen Speicher.

    Jetzt müssen wir universelle Binärdateien produzieren, denn der Verlag besteht darauf, PPC zu unterstützen. Um den Aufbau von Universal-Binärdateien zu erleichtern, haben wir die CFLAGS und CXXFLAGS um -arch i386 -arch ppc bei der Kompilierung von Wrapper-Code (Ogre3d selbst schon scheint eine universelle Binärdatei) zu ändern.

    Allerdings hat Apple beschlossen, beide Kerne bei der Erstellung universeller Binärdateien zu verwenden, und das hat das System dazu gebracht, zu rollen und zu sterben. (Nun, kriechen bei 0,9-1,4% CPU-Auslastung sowieso.) Während wir gewöhnlich würden wir das zu schätzen wissen, auf einem 1GB Mac Mini, das komplett unsere Entwicklung blockiert.

    Abgesehen davon, dass eine neue Build-Maschine, die Aufforderung auf PPC-Unterstützung und die Herstellung eines PPC-nur zu bauen, ist die einzige Rückgriff, die wir haben, um GCC das Laichen der zweiten gleichzeitigen Prozess zu blockieren.

    Wie würden wir das machen?

  • Wie schütze ich den Python-Code?
  • CPU- oder Motherboard-Seriennummer erhalten?
  • 2 Solutions collect form web for “Erstellen von universellen Binärdateien auf Mac – Erzwingen einzelner Compiler-Child-Prozess”

    Ich habe die Quelle von Apples GCC-Treiber überprüft (derjenige, der diese -arch Optionen unterstützt und die Kinderprozesse -arch ), und es gibt keine Option oder Umgebungsvariable, die du wählen kannst.

    Die einzigen Optionen, die ich dir links sehe, sind:

    • Laden Sie den Apple-Treiber herunter (zB von dort , Ende der Seite) und ändern Sie den Datei driverdriver.c so, dass Prozesse sequentiell gestartet werden (anstatt parallel)
    • Tausche i386 und powerpc baut, und verbinden Sie die endgültigen Build-Objekte (ausführbare Dateien, gemeinsame Bibliotheken, etc.) mit lipo

    Ich hoffe das hilft!

    Wird nur einen Kern ausschalten? Anscheinend bietet die Installation der Apple Developer Tools (XCode et al.) Einen Prozessor-System-Präferenzbereich, so dass Sie einen Kern ausschalten können. Ich habe versucht, dies zu testen, aber die XCode-Installation scheiterte aus irgendeinem Grund …

    EDIT: Ich weiß das schon vor einer Weile, aber ich habe nur an etwas gedacht. Warum nicht mit -march = i386 und -march = ppc separat bauen und dann die Binärdateien mit Lipo kombinieren?

    Python ist die beste Programmiersprache der Welt.