Bonjour,
Expérience vécue ce matin :
je voulais compiler avec un simple make tel qu'indiqué dans le readme quelques .c pour obtenir des modules pilotant une carte IO, mais lors de la compil je me suis pris une abominable erreur
et me voilà parti à aller voir dans le Makefile en question :arch/x86/Makefile:151: CONFIG_X86_X32 enabled but no binutils support
Je fais des tests :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 ifdef CONFIG_X86_X32 x32_ld_ok := $(call try-run,\ /bin/echo -e '1: .quad 1b' | \ $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" - && \ $(OBJCOPY) -O elf32-x86-64 "$$TMP" "$$TMPO" && \ $(LD) -m elf32_x86_64 "$$TMPO" -o "$$TMP",y,n) ifeq ($(x32_ld_ok),y) CONFIG_X86_X32_ABI := y KBUILD_AFLAGS += -DCONFIG_X86_X32_ABI KBUILD_CFLAGS += -DCONFIG_X86_X32_ABI else [151] $(warning CONFIG_X86_X32 enabled but no binutils support) endif endif export CONFIG_X86_X32_ABI
La commande /bin/echo -e '1: .quad 1b' | gcc -c -x assembler -o /tmp/sortie - && objcopy -O elf32-x86-64 /tmp/sortie /tmp/sortie0
fonctionne bien, ainsi que ld -m elf32_x86_64 /tmp/sortie0 -o /tmp/sortie,y,n
Mais $(KBUILD_AFLAGS) n'est pas testé...
Creusons : c'est ce test ifeq ($(x32_ld_ok),y) qui échoue, je suspecte un micmac 32/64 bits alors après avoir recompilé un noyau avec l'option CONFIG_X86_X32 activée plus modif de la ligne de commande du boot sans aucun effet positif, j'installe le paquet gcc-multilib, mais make échoue toujours.
Et d'un coup j'ai une intuition (mes anges gardiens ! -- merci à eux) : le dossier dans lequel j'ai les fichiers en cours de tentative de compil contient une espace ("install machine"), hop !, je le renomme en la remplaçant par un underscore et comme au bon vieux temps de l'informatique préhistorique, je relance la compil qui s'exécute maintenant sans l'ombre d'une erreur.
Go figure...
Voilà, vous êtes prévenus, bannissez les espaces sinon gare à la perte de temps avec des messages d'erreur complètement à côté de la plaque.
Partager