2013-01-21 87 views
0

我想编译一个“Hello world”linux kernel module编程Fedora 14。 我的内核版本是“2.6.35.14-97.fc14.i686”,我指的是make文件中的/lib/modules/$(shell uname -r)/build M=$(PWD)模块来编译我的hello.o程序。Linux内核模块编程Makefile错误

此“生成”文件显示它为特殊文件并链接到/lib/module/2.6....i686/文件夹中的源文件。

当我编译我的代码获取低于错误。

make -C /lib/modules/2.6.35.14-97.fc14.i686/build M=/root/kernel modules 
make: *** /lib/modules/2.6.35.14-97.fc14.i686/build: No such file or directory. Stop. 

Makefile

obj-m +=hello.o 

all: 
     make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 

请给我的解决方案来运行这个模块程序。

+0

消息是很清楚...有没有'build'目录,或父迪尔斯的至少一个(/ lib目录,/ lib/modules目录,/ lib中/ modules/2.6 ...)缺失。 –

+0

检查你的/ lib/modules/*目录。可能不是'2.6.35.14-97.fc14.i686' ...对于Ubuntu,它是'3.5.0-22-generic',不知道Fedora。 – Veger

+0

你的系统中是否安装了kernel-devel或类似的软件包? – Xeor

回答

0

你应该只需要'kernel-devel',你可以使用yum来安装它。我使用ubuntu,我只需要下载3.5.0-22-generic软件包就可以工作,但是快速的'Kernal开发模块在Fedora上搜索谷歌就导致我Here 希望这会有所帮助。

0

尝试安装安装kernel-devel

yum install kernel-devel

0

编译内核和安装模块INSTALL_MOD_PATH = /路径/ 在编译像 您的hello world。链路模块路径MAKE -C KDIR = INSTALL_MOD_PATH M ='$ PWD'模块

+0

请尝试更多地解释您的答案。它是做什么的?它为什么解决问题? –

+0

Xaver Kapeller通过编译模块将某些模块链接到链接器,假设你的模块使用了netlink。在编译之前启用netlink模块。 –

0

如其他人所建议,请安装“kernel-devel”。这对我来说非常合适。

您可以通过安装它:

yum install kernel-devel