我需要向Makefile或源文件添加哪些信息才能使当前符号不会导致编译问题。
PWD = / home / user / dev / kernel-sandbox ARCH = x86_64 GNU / Linux
make的输出:
#include <linux/init.h>
#include <linux/module.h>
#include <asm-generic/current.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
printk(KERN_INFO "The process is \"%s\" (pid %i)\n",current->comm, current->pid);
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
[/家庭/用户的/ dev /内核沙箱/ lkm.c]
obj-m += lkm.o
all:
sudo make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
sudo make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
[/家庭/用户的/ dev /内核沙箱/生成文件]
#include <asm-generic/current.h>
我还有另一个current.h头文件,我试图包含但不知道如何指定#include,因为我不确定kbuild究竟是如何寻找路径的。 /usr/src/linux-headers-4.10.0-35-generic/arch/ia64/include/asm/current.h
额外信息:如果我删除printk(KERN_INFO "The process is \"%s\" (pid %i)\n", current->comm, current->pid);
和{{1}},则构建正常。