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?
-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.
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
Wenn Sie cmake verwenden, können Sie m64-Kompilierungsoptionen folgendermaßen hinzufügen:
add_compile_options(-m64)