【问题标题】:Linux kernel module makefile issuesLinux内核模块makefile问题
【发布时间】:2014-08-08 07:51:25
【问题描述】:

我正在尝试学习一些有关 Linux 内核编程的知识,但在尝试了一个教程之后,我完全陷入了困境。 我的 makefile 抱怨某种“找不到命令”错误(错误 127),所以它不会编译它。 我尝试寻找解决方案,但没有任何结果。所以我想我会试着在这里问。抱歉,如果这是重复的。

这是shell的错误输出:

malt@ubuntu:~/Documents/C$ make
C /usr/src/linux SUBDIRS=/home/malt/Documents/C; modules
/bin/sh: 1: C: not found
/bin/sh: 1: modules: not found
make: [default] Error 127 (ignored)

这是我的makefile:

# Makefile of My First Driver

# if KERNELRELEASE is defined, we've been invoked from the kernel build system
# and can use it's language
ifneq (${KERNELRELEASE},)
    obj-m := mfd.o

# otherwise we've been called directly from the commandline.
# invoke the kernel build system.
else
    KERNEL_SOURCE := /usr/src/linux
    PWD := ${shell pwd};

default:
    ${make} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} modules

clean:
    ${make} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} clean

endif

有人知道哪里出了问题吗?

提前致谢!

【问题讨论】:

    标签: linux compilation makefile kernel


    【解决方案1】:

    添加到 Santosh A 的更改

    1. PWD := ${shell pwd}; 中不应有 ;。删除它将解决/bin/sh: 1: modules: not found 错误。

    【讨论】:

      【解决方案2】:

      将关键字 make 更改为 MAKE,如下所示

      默认值:
      ${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} 模块
      干净:
      ${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} 干净

      【讨论】:

      • 为什么“MAKE”要大写?我理解其余的,但我对此感到好奇。不过还是谢谢。
      • make 是一个不应该使用的关键字