web-dev-qa-db-fra.com

Comment compiler un programme C++ en tant que 64 bits sur une machine 64 bits?

Peut-être une question très triviale:

J'ai besoin de compiler un programme en 64 bits (le makefile précédent écrit pour le compiler en 32 bits).

J'ai vu l'option -m32 apparaître dans les paramètres de ligne de commande à chaque compilation de fichier. J'ai donc modifié le fichier make pour supprimer -m32 dans OPTFLAG, mais une fois encore, lorsque le programme est compilé, je vois encore -m32 apparaître et les fichiers binaires sont toujours en 32 bits. Est-ce que ce m32 vient d'ailleurs aussi?

15
xyz

-m32 ne peut provenir que de quelque part dans vos makefiles, vous devrez le rechercher (utilisez un grep récursif) et le supprimer.

Quand je suis en mesure de forcer -m64, le message "Le processeur que vous avez sélectionné ne prend pas en charge le jeu d'instructions x86-64". uname -a donne x86_64

Cette erreur signifie qu'il existe une option telle que -march=i686 dans les fichiers makefiles, qui n'est pas valide pour la compilation 64 bits, essayez de la supprimer également.

Si vous ne pouvez pas le supprimer (essayez plus fort!), Ajouter -march=x86-64 après sur la ligne de commande spécifiera un type de CPU générique 64 bits.

18
Jonathan Wakely

Si le logiciel que vous essayez de créer est basé sur autotools, cela devrait faire l'affaire:

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

Ou, pour un Makefile simple:

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

Si vous utilisez cmake, vous pouvez ajouter les options de compilation m64 par ceci:

add_compile_options(-m64)
0
Jayhello