我是害虫 发表于 2008-11-16 19:33

编写内核模块问题,不能生成.ko文件?

编译使不能生成.ko

环境是fc9,因为它本身不包含内核,所以我下载了一个,重新编译了

不知道是什么原因
# make -C /usr/src/linux-2.6.27.6 M=$PWD modules
make: Entering directory `/usr/src/linux-2.6.27.6'
Building modules, stage 2.
MODPOST 0 modules
make: Leaving directory `/usr/src/linux-2.6.27.6'

程序是按ldd3上面写的

达人指点一下,弄很长时间了

谢谢

Godbach 发表于 2008-11-16 19:58

你编译的内核执行make modules_install了吗

Godbach 发表于 2008-11-16 19:59

就是/lib/modules目录下生成了以你使用源码版本命名的目录了吗

dreamice 发表于 2008-11-16 20:09

回复 #1 我是害虫 的帖子

应该是重新编译的时候除了问题,你可以找个最简单的helloworld编译一下试试

我是害虫 发表于 2008-11-16 20:38

原帖由 Godbach 于 2008-11-16 19:59 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
就是/lib/modules目录下生成了以你使用源码版本命名的目录了吗

make modules_install命令作了
在lib/modules下面也生成了2。6。27。6的目录

我是害虫 发表于 2008-11-16 20:41

原帖由 dreamice 于 2008-11-16 20:09 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
应该是重新编译的时候除了问题,你可以找个最简单的helloworld编译一下试试

试过了,没问题

我想可能是不是,gcc还是用的以前内核头文件的原因阿,或者说当初标准库编译的时候,用的旧的内核头文件

郁闷阿

dreamice 发表于 2008-11-16 21:28

原帖由 我是害虫 于 2008-11-16 20:41 发表 http://linux.chinaunix.net/bbs/images/common/back.gif


试过了,没问题

我想可能是不是,gcc还是用的以前内核头文件的原因阿,或者说当初标准库编译的时候,用的旧的内核头文件

郁闷阿

如果helloworld可以编译的话,你把你的代码贴出来看看,到底是怎么回事。

我是害虫 发表于 2008-11-16 21:51

原帖由 dreamice 于 2008-11-16 21:28 发表 http://linux.chinaunix.net/bbs/images/common/back.gif


如果helloworld可以编译的话,你把你的代码贴出来看看,到底是怎么回事。
#include <linux/module.h>       
#include <linux/kernel.h>       

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

module_init(init_module);
module_exit(cleanup_module);



makefile文件是
obj-m +=hello.o


# make -C /usr/src/linux-2.6.27.6 M=$PWD modules      //在源程序目录里执行的
make: Entering directory `/usr/src/linux-2.6.27.6'
Building modules, stage 2.
MODPOST 0 modules
make: Leaving directory `/usr/src/linux-2.6.27.6'


我觉得不是程序的问题,不知道您用的是什么环境

[ 本帖最后由 我是害虫 于 2008-11-16 21:53 编辑 ]

dreamice 发表于 2008-11-16 22:11

给你一个参考的Makefile试一下
TARGET = hello
KDIR = /lib/modules/$(shell uname -r)/build
PWD = $(shell pwd)
obj-m := $(TARGET).o
default:
      make -C $(KDIR) M=$(PWD) modules
clean:
      $(RM) *.o *.ko *.mod.c Module.symvers

我是害虫 发表于 2008-11-16 22:30

谢谢你
成功了
能告诉我是因为什么原因吗

我感觉把您给我的makefile展开,和我得差不多阿

make语句真难懂啊,给推荐本书把
再次谢谢你

[ 本帖最后由 我是害虫 于 2008-11-16 22:36 编辑 ]
页: [1] 2
查看完整版本: 编写内核模块问题,不能生成.ko文件?