2009-11-18 3 views
11

Nach Apple's gcc 4.2.1 doc:Apples gcc, was ist der Unterschied zwischen -arch i386 und -m32?

-arch Bogen
Compile für das angegebene Ziel Architektur arch. Die zulässigen Werte sind 'i386', 'x86_64', 'ppc' und 'ppc64'. Mehrere Optionen funktionieren, und leiten Sie den Compiler, um "universelle" Binärdateien einschließlich Objekt Code für jede Architektur mit -arch angegeben zu produzieren. Diese Option funktioniert nur, wenn für jede angegebene Architektur Assembler und Bibliotheken verfügbar sind. (APPLE ONLY)

Also, was ist der Unterschied zwischen diesen beiden Anrufe ist:

gcc -arch i386 program.c

und

gcc -m32 program.c

es ist nur, dass -arch stärker ist als es flexibler ist und kann universelle Binärdateien erzeugen, wenn mehrere Archs spezifiziert werden?

Antwort

9

Ich bin mir nicht sicher, aber vom Lesen der Manpage komme ich zu ähnlichen Schlussfolgerungen wie Sie.

Ich denke, der einzige wirkliche Unterschied ist, dass -arch verwendet werden kann, um universelle Binärdateien zu erstellen.

Wie funktioniert das Universal Binaries

gcc -arch i386 -arch x86_64 foo.c 

zu schaffen, aber man kann tatsächlich nicht sicher sein, was die Semantik der folgenden sein sollten (sie sind wahrscheinlich auch ungültige Syntax). Vor allem die dritte sollte ungültig sein, wie die man-Seiten für 32- oder 64-Bit-Umgebungen generieren.

gcc -m32 -arch i386 -arch x86_64 foo.c 
gcc -m64 -arch i386 -arch x86_64 foo.c 
gcc -m32 -m64 -arch i386 -arch x86_64 foo.c 
-m32 
-m64 
    Generate code for a 32-bit or 64-bit environment. The 32-bit environment 
    sets int, long and pointer to 32 bits and generates code that runs on any 
    i386 system. The 64-bit environment sets int to 32 bits and long and 
    pointer to 64 bits and generates code for AMDs x86-64 architecture. 
    For darwin only the -m64 option turns off the -fno-pic and 
    -mdynamic-no-pic options. 

-arch //already included in question 
Verwandte Themen