Als Alternative zu Andrew Medico Antwort, verwenden Sie '-m32
' für 32-Bit-Compilations und '-m64
' für 64-Bit-Compilations auf PPC oder SPARC oder Intel-Maschinen - da Sie Erwähnen Sie nicht wirklich, welche Chip-Architektur Sie verwenden und dass die Notation auf all diesen funktioniert.
benutze ich oft:
CC="gcc -m32" ./configure
eine 32-Bit-Zusammenstellung zu gewährleisten (oder, häufiger, CC="gcc -m64"
64-Bit-Zusammenstellung zu gewährleisten).
Frage: "Ist CC eine Umgebungsvariable, die von make verwendet wird?"
Antwort: Ja, obwohl in diesem Fall auch von configure
erkannt wird, das ist ein Shell-Skript, das von autoconf
generiert wird. Die Notation, die ich verwendet habe - was ich an der Befehlszeile verwende - setzt CC in der Umgebung, während der Befehl configure
ausgeführt wird. Die andere Antwort schlägt vor mit:
./configure CC="gcc -m32"
Ich nehme an, dass funktioniert und erreicht viel den gleichen Effekt; Ich habe es nicht versucht, also weiß ich nicht, dass es funktioniert. Wenn Sie ./configure --help | less
ausführen, werden Informationen (oft nur Standardinformationen) zur Verwendung des Skripts angezeigt. Und am Ende wird es (einige der) relevante Umgebungsvariablen auflisten, von denen CC eins ist.
Der Vorteil der Einstellung des C-Compilers auf "gcc-m32" besteht darin, dass das 32-Bit-Flag jedes Mal gesetzt wird, wenn der Compiler verwendet wird - es gibt sehr wenig Spielraum für einen Fehler. Wenn Sie eine Flags-Variable (CFLAGS, usw.) setzen, besteht die Möglichkeit, dass ein Befehl sie nicht verwendet, und dann können die Dinge schief gehen.
Auch zurück zur Frage verwendet make
sicherlich eine Variable (Makro) namens CC. Und Sie können das in der make-Befehlszeile einstellen:
Das überschreibt jede Einstellung im Makefile. Wenn Sie dagegen eine Umgebungsvariable verwenden, überschreibt die Einstellung im Makefile den Wert in der Umgebung. Daher ist es weniger hilfreich, CC als Umgebungsvariable festzulegen. Obwohl der Umgebung Vorrang vor dem Makefile gibt, ist es normalerweise eine gefährliche Option zu verwenden - es kann unerwartete Nebenwirkungen haben.
Siehe auch http://stackoverflow.com/questions/1272357/how-to-compile-a-32-bit-binary-on-a-64-bit-linux-machine-with-gcc-cmake – Raedwald