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?
-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.
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
Si vous utilisez cmake, vous pouvez ajouter les options de compilation m64 par ceci:
add_compile_options(-m64)