es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La compilación a través del archivo Makefile falla, pero desde la línea de comandos tiene éxito.

Estoy tratando de construir un módulo externo contra un árbol de kernel descargado.

Mi Makefile se ve así:

obj-m += userModule.o
ARCH := arm
CC := arm-linux-gnueabihf-
KERN_DIR := /home/user/Downloads/beaglebone-linux-5.10/
CD := /home/user/Downloads/userModule/

all:
make ARCH=$(ARCH) CROSS_COMPILE=$(CC) -C $(KERN_DIR) M=$(CD) modules
clean:
make ARCH=$(ARCH) CROSS_COMPILE=$(CC) -C $(KERN_DIR) M=$(CD) clean
help:
make ARCH=$(ARCH) CROSS_COMPILE=$(CC) -C $(KERN_DIR) M=$(CD) help

Cuando ejecuto: $make, obtengo un error:

$make
sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -C /home/user/Downloads/beaglebone-linux-5.10/ M=/home/user/Downloads/userModule/ modules
make: Entering directory ‘/home/user/Downloads/beaglebone-linux-5.10’
CC [M] /home/user/Downloads/userModule//userModule.o
/bin/sh: 1: arm-linux-gnueabihf-: not found
make[1]: *** [scripts/Makefile.build:280: /home/user/Downloads/userModule//userModule.o] Error 127
make: *** [Makefile:1825: /home/user/Downloads/userModule/] Error 2
make: Leaving directory ‘/home/user/Downloads/beaglebone-linux-5.10’
make: *** [Makefile:9: all] Error 2

Pero, cuando comento todo el Makefile excepto la primera línea, de modo que se vea así:

obj-m += userModule.o

y ejecuto el mismo comando pero esta vez desde la línea de comandos, todo se construye sin errores:

$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -C /home/user/Downloads/beaglebone-linux-5.10/ M=$PWD modules

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -C /home/user/Downloads/beaglebone-linux-5.10/ M=$PWD modules
make: Entering directory ‘/home/user/Downloads/beaglebone-linux-5.10’
CC [M] /home/user/Downloads/userModule/userModule.o
MODPOST /home/user/Downloads/userModule/Module.symvers
CC [M] /home/user/Downloads/userModule/userModule.mod.o
LD [M] /home/user/Downloads/userModule/userModule.ko
make: Leaving directory ‘/home/user/Downloads/beaglebone-linux-5.10’

todo va bien.

Comparé los 2 comandos tal como se muestran en los mensajes de construcción y parecen iguales.
¿Alguien ha experimentado este comportamiento?

Tags:  , , ,