是否可以使用 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
了。