日期:2014-05-16  浏览次数:20940 次

ldd3 新手问题
我用的 是 fc5 内核版本是 2.6.15-1.2054_FC5内核编译过程是按照 这个 步骤进行的 http://blog.csdn.net/yiminglinux/archive/2006/04/19/668813.aspx
其中 我的 hello.c 文件如下:
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
  printk(KERN_ALERT "Hello World\n" );
  return 0;
}

static void hello_exit(void)
{
  printk(KERN_ALERT "Goodbye World\n" );
}

module_init(hello_init);
module_exit(hello_exit);

Makefile 文件如下:
ifneq ($(KERNELRELEASE),)
  obj-m :=hello.o
else
  KERNELDIR ?= /lib/modules/$(shell uname -r)/build
  PWD :=$(shell pwd)
default:
  $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif

错误原因 如下:
[root@localhost linux-2.6.15.i686]# make
make -C /lib/modules/2.6.15-1.2054_FC5/build M=/usr/src/redhat/BUILD/kernel-2.6.15/linux-2.6.15.i686 modules
make[1]: Entering directory `/usr/src/redhat/BUILD/kernel-2.6.15/linux-2.6.15.i686'
make[1]: *** 没有规则可以创建目标“modules”。 停止。
make[1]: Leaving directory `/usr/src/redhat/BUILD/kernel-2.6.15/linux-2.6.15.i686'
make: *** [default] 错误 2



请问 ,各位大侠 ,我到底是哪里出错了 , 都弄了 好几天了 ,也問了 几个人都还没有弄好阿,我一开始以为是 内核的 问题,不够 我 内核都编译了 三次 了 ,还是 不行,各位能不能帮我看看,本人在此感谢了

------解决方案--------------------
http://community.csdn.net/Expert/topic/5537/5537487.xml?temp=.5052759


------解决方案--------------------
很明显, 你的问题是, 你的系统内只有新内核, 没有新内核的源代码.
在编译模块代码时找不到相关定义, 虽然头文件能找到, 但那是旧内核的头文件.
------解决方案--------------------
建议内核开发时自己编译安装新内核。开发时都基于自己的新内核来做,这样就不会有这些莫名的错误了。