gpt4 book ai didi

c++ - linux/内核.h : No such file or directory

转载 作者:IT王子 更新时间:2023-10-29 00:43:01 29 4
gpt4 key购买 nike

我打算在 Ubuntu 10.10(内核为 2.6.35-28-generic)中编写一个 Hello World 模块。 header 位于:

/usr/src/linux-headers-2.6.35-28-generic

你好.c:

#include <linux/kernel.h> 
#include <linux/module.h>

int init_module(void)
{
printk("Hello, world\n");
return 0;
}

void cleanup_module(void)
{
printk("Goodbye\n");
}

和生成文件:

CC = gcc
CFLAGS = -Wall -DMODULE -D__KERNEL__
hello.o: hello.c
$(CC) $(CFLAGS) -c hello.c
echo insmod hello.o to install
echo rmmod to delete

制作时出现错误:

hello.c:1: fatal error: linux/kernel.h : No such file or directory compilation terminated.

我该如何解决?

最佳答案

您不能只对 Linux 内核模块使用传统风格的 Makefile;虽然您可能能够强制某些东西工作,但这将是一种痛苦的经历。

首先阅读Documentation/kbuild/modules.txt文件;它将准确描述您在编写模块 Makefile 时需要做什么,以便它可以巧妙地挂接到内核的 Kbuild 环境中。您的 Makefile 可能看起来像这样:

ifneq ($(KERNELRELEASE),)
# kbuild part of makefile
obj-m := 8123.o
8123-y := 8123_if.o 8123_pci.o 8123_bin.o

else
# normal makefile
KDIR ?= /lib/modules/`uname -r`/build

default:
$(MAKE) -C $(KDIR) M=$$PWD

# Module specific targets
genbin:
echo "X" > 8123_bin.o_shipped

endif

请相信我;虽然您可能认为让您自己的 Makefile 工作“只是一个小改动”,但即使是内核版本中的微小改动也会再次彻底破坏您的构建。现在就花一个小时为您的模块编写一个 Kbuild 兼容的 Makefile。当引入 Kbuild 基础结构时,我浪费了数周的时间试图维护一个预先存在的 Makefile。每个新内核都会让我损失小时的生产力。

关于c++ - linux/内核.h : No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5611254/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com