【发布时间】:2022-01-18 06:33:22
【问题描述】:
我正在尝试针对下载的内核树构建一个树外模块。
我的 Makefile 如下所示:
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
当我执行:$make,我得到一个错误:
$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
但是,当我注释掉除第一行之外的整个 Makefile 时,它看起来像这样:
obj-m += userModule.o
我执行相同的命令,但这次是从命令行,一切都没有错误地构建:
$ 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'
一切顺利。
我比较了两个命令,因为它们显示在构建消息中,它们看起来相同。 有没有人经历过这样的行为?
【问题讨论】:
标签: linux makefile kernel kernel-module