wake-up-neo.net

Wie kann man ein C++ - Programm als 64-Bit auf einer 64-Bit-Maschine kompilieren?

Vielleicht eine sehr triviale Frage:

Ich muss ein Programm als 64-Bit kompilieren (früheres Makefile wurde geschrieben, um es als 32-Bit zu kompilieren).

Ich habe gesehen, dass die Option -m32 bei jeder Dateikompilierung in Befehlszeilenparametern angezeigt wird. Also habe ich das Makefile geändert, um -m32 in OPTFLAG zu entfernen, aber auch wenn das Programm kompiliert wird, sehe ich immer noch -m32 und binaries noch 32-Bit. Kommt dieser m32 auch von wo aus?

15
xyz

-m32 kann nur von irgendwo in Ihren Makefiles kommen, Sie müssen es aufspüren (rekursives grep verwenden) und es entfernen.

Wenn ich -m64 erzwingen kann, erhalte ich die Meldung "Die ausgewählte CPU unterstützt den Befehlssatz x86-64 nicht" .Alle Hinweise? uname -a gibt x86_64

Dieser Fehler bedeutet, dass es eine Option wie -march=i686 in den Makefiles gibt, die für die 64-Bit-Kompilierung nicht gültig ist. Versuchen Sie auch, diese zu entfernen.

Wenn Sie es nicht entfernen können (versuchen Sie es schwieriger!), Wird durch Hinzufügen von -march=x86-64 in der Befehlszeile ein generischer 64-Bit-CPU-Typ angegeben.

18
Jonathan Wakely

Wenn die Software, die Sie erstellen möchten, auf Autotools basiert, sollten Sie dies tun:

./configure "CFLAGS=-m64" "CXXFLAGS=-m64" "LDFLAGS=-m64" && make

Oder nur für ein einfaches Makefile:

env CFLAGS=-m64 CXXFLAGS=-m64 LDFLAGS=-m64 make
5

Wenn Sie cmake verwenden, können Sie m64-Kompilierungsoptionen folgendermaßen hinzufügen:

add_compile_options(-m64)
0
Jayhello