我想创建一个简单的 Hello world 驱动程序,如下所示:第2页并用 Makefile 编译它:
obj-m := hello.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
但我得到了:
制作1: *** /lib/modules/4.3.5-300.fc23.x86_64/build: 没有这样的文件或目录。
这是逻辑,因为建造是一个链接/usr/src/kernels/4.3.5-300.fc23.x86_64
,我的/usr/src
目录是空的。但内核开发已安装rpm -qa|grep kernel
::
kernel-headers-4.3.5-300.fc23.x86_64
kernel-modules-4.3.5-300.fc23.x86_64
kernel-core-4.2.3-300.fc23.x86_64
kernel-devel-4.3.5-300.fc23.x86_64
kernel-4.2.3-300.fc23.x86_64
kernel-modules-extra-4.3.5-300.fc23.x86_64
kernel-modules-extra-4.2.3-300.fc23.x86_64
kernel-core-4.3.5-300.fc23.x86_64
libreport-plugin-kerneloops-2.6.4-1.fc23.x86_64
abrt-addon-kerneloops-2.8.0-2.fc23.x86_64
kernel-4.3.5-300.fc23.x86_64
kernel-modules-4.2.3-300.fc23.x86_64
我读到这些软件包可能已经存储在其中/usr/include
,当我尝试安装它们时,它当然一直说它们已经安装了。
问题:我应该做什么,makefile 或安装,才能将 hello.c 正确编译为 hello.ko ?
我有 Fedora 23。
答案1
好的,我的工作是升级/安装内核和所有 kernel-X 模块。之后内核(适当版本)目录出现在/usr/src/kernels/