编译内核模块?(Live USB)

编译内核模块?(Live USB)

是否可以使用 Ubuntu 14.04 LTS 在实时 USB 上编译内核模块?我已经尝试了几个小时,但所有尝试都失败了。

我做了什么。安装了 Linux 标头。创建了一个 make 文件,其中包含:

obj-m = hello.o
KVERSION = $(shell uname -r)
all:
        make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
        make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

创建 ac 文件并添加

#include <linux/module.h>       /* Needed by all modules */
#include <linux/kernel.h>       /* Needed for KERN_INFO */
#include <linux/init.h>         /* Needed for the macros */
static int __init hello_start(void)
{
printk(KERN_INFO "Loading hello module...\n");
printk(KERN_INFO "Hello world\n");
return 0;
}
static void __exit hello_end(void)
{
printk(KERN_INFO "Goodbye Mr.\n");
}
module_init(hello_start);
module_exit(hello_end);

当我写“make hello”时,我得到了回应:

ubuntu@ubuntu:~/Desktop/EmbeddedProgramming$ make hello
cc     hello.c   -o hello
hello.c:1:60: fatal error: linux/module.h: No such file or directory
 #include <linux/module.h>       /* Needed by all modules */

当我检查 uname -ri 时,返回“3.16.0-30-generic”。当我检查目录时,我确实可以在该位置找到 module.h。我不知道为什么它说找不到头文件,因为它就在那里。

答案1

我在终端中运行了错误的命令,现在应该可以make -C /lib/modules/$(uname -r)/build M=$(pwd) modules了。

相关内容