【问题标题】:fedora linux --- compiling first linux modulefedora linux --- 编译第一个 linux 模块
【发布时间】:2013-08-29 08:58:00
【问题描述】:

在 Fedora linux 中编译我的第一个内核模块时出错。

源代码:--

#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);

生成文件:----

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

制作时出错:--

$ make
make -C /lib/modules/3.8.6-203.fc18.x86_64/build M=/home/dinesh/development/linux/kernel_modules/hello modules
make: *** /lib/modules/3.8.6-203.fc18.x86_64/build: No such file or directory.  Stop.
make: *** [default] Error 2

现在,如果我看到 build 是否存在,我会关注 o/p。构建显示为软链接:---

$ ls -l /lib/modules/3.8.6-203.fc18.x86_64/
total 2632
lrwxrwxrwx.  1 root root     38 Apr 15 21:32 build -> /usr/src/kernels/3.8.6-203.fc18.x86_64
drwxr-xr-x. 

I got same error even after installing, kernel-devel :--

我的 makefile 是正确的,它在规则之前有正确的选项卡。请建议如何解决此错误?

【问题讨论】:

  • /usr/src/kernels/3.8.6-203.fc18.x86_64 存在吗?
  • 只有这两个文件夹存在----> /usr/src/kernels/3.8.7-201.fc18.x86_64 --- & --- /usr/src/kernels/3.9. 4-200.fc18.x86_64 ---->软链接一不存在
  • 你可能需要安装对应的kernel-source包。
  • @Katoch 你能编译内核源码吗?
  • 在 Fedora 中构建模块不需要内核源代码树;你只需要匹配你正在构建的内核的kernel-develkernel 包版本。

标签: linux linux-device-driver embedded-linux fedora


【解决方案1】:

正如 guido 所说,你必须匹配你当前的内核和 kernel-devel 包。

运行你的内核版本

uname -r

我得到 3.6.10-4.fc18.x86_64,下载那个 kernel-devel 版本

sudo yum install kernel-devel-3.6.10-4.fc18

或者更新你的系统并用新内核启动,我相信这两个会自动匹配。

【讨论】:

    猜你喜欢
    • 2015-09-01
    • 2011-05-03
    • 2012-12-19
    • 2011-06-06
    • 2023-03-14
    • 2012-02-22
    • 2014-01-25
    相关资源
    最近更新 更多