Universal Binaries für PPC und X86, SDK Settings ?

  • Ersteller syntheticsw
  • Erstellt am

syntheticsw

Gast
Hallo !


Ich habe jetzt eine Art Replacement geschrieben,
das erst gcc mit den PPC Flags aufruft,
danach mit den X86 Flags aufruft und anschließend mit
lipo die beiden Dateien zusammenfügt.

Das man wie in XCode direkt Universal Binaries in configure scripts
erzeugen kann.


Leider findet man im Internet jede Menge versch.
Compiler Flags die man benutzen sollte, auch die Apple Seiten
sagen teilweise verschiedenes aus :

Welche sind die richtigen Compile- und Link Flags
für PPC und welche die richtigen für X86 ?

CFLAGS_PPC=?
LDFLAGS_PPC=?
CFLAGS_X86=?
LDFLAGS_X86=?


Danke.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Vielleicht bin ich zu doof, aber ich verstehe die Frage nicht.

Warum sollten die Flags anders sein? Oder meinst Du -arch ppc und -arch i386 ?

Alex
 

syntheticsw

Gast
Hallo !


Ja, aber wenn ich nur -arch ppc -arch i386 benutze,
bekomme ich ein Universal Binary das erst ab 10.4 läuft.

Im Netz wird empfohlen mit gcc-3.3 den PPC Teil und mit
gcc-4.0 den X86 Teil zu erstellen und dann beides mit lipo zu
verbinden.

Neben -arch ppc oder i386 soll man den Pfad des
entsprechenden Developer SDKs angeben,
z.B. /Developer/SDKs/MacOSX10.2.8.sdk
aber wie müssen die Flags genau lauten ?


Danke.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Also, gcc3.3 brauchst Du dann, wenn das PPC Binary auf Versionen älter als 10.3.9 laufen soll.

SDK wird mit -isysroot gesetzt

Alex
 

syntheticsw

Gast
Wie lauten genau die Flags :


const char *COMPILE_PPC="-arch ppc \
-DMAC_OS_X_VERSION_MIN_REQUIRED=1030 \
-isysroot /Developer/SDKs/MacOSX10.3.9.sdk";

const char *LINK_PPC="-arch ppc \
-isysroot /Developer/SDKs/MacOSX10.3.9.sdk";

const char *COMPILE_X86="-arch i386 \
-mmacosx-version-min=10.4 \
-DMAC_OS_X_VERSION_MIN_REQUIRED=1040 \
-isysroot /Developer/SDKs/MacOSX10.4u.sdk";

const char *LINK_X86="-arch i386 \
-isysroot /Developer/SDKs/MacOSX10.4u.sdk";

So ?
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Ich bin nicht sicher, was der ld ja haben will -- hauptsächlich arbeite ich mit Xcode.

Ausprobieren würde ich sagen ;)

Alex
 

syntheticsw

Gast
Leider habe ich keinen Intel Mac, kann also
den X86 Teil nicht testen.

Ich möchte die Flags so wählen das das zu compilierende
Programm so behandelt wird, als würde es wirklich unter 10.2
oder 10.3 compiliert.

Leider habe ich dabei einige Probleme.
Wäre schön wenn jemand hier seine getesteten, funkt. Flags
posten könnte.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Ich denke, da musst Du ein bischen mehr information geben.

Warum willst Du in der Kommandozeile mit 10.2er oder 10.3er SDK übersetzen? Wenn es sich um reine Mac Programme handelt wäre doch Xcode da sicher die bessere -- und einfachere -- variante.
Wenn es generelle *nix Programme sind, dann ist denen das SDK relativ egal.

Aber zum Thema: Ich kann nur wiederholen, was ich oben gesagt habe. Die wichtigen Flags sind:
-arch i386 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk

bzw.

-arch ppc -mmacosx-version-min=10.2 -isysroot /Developer/SDKs/MacOSX10.2.8.sdk

für gcc und ld. Was für Probleme hast Du denn damit?

Alex
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
CPPFLAGS+= -arch ppc -isysroot /Developer/SDKs/MacOSX10.4.u.sdk
LINKFLAGS+= -arch ppc -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4.u.sd

Alex