分类: LINUX
2011-03-23 16:56:02
今天试着在ubuntu10.4来配置ldd3的环境。出现如下问题:
现像:
makefile:
# To build modules outside of the kernel tree, we run "make" KERNELSRC:=/home/foxwolf/study/ldd3/linux-2.6.32 modules: clean: .PHONY: modules clean endif |
hello$ make hello$ sudo insmod hello_driver.ko hello$ dmesg | tail -n 1 hello$ modinfo hello_driver.ko hello$ cat hello_driver.mod.c MODULE_INFO(vermagic, VERMAGIC_STRING); struct module __this_module static const struct modversion_info ____versions[] static const char __module_depends[]
|
网络上查找信息,说是当前编译的源码版本跟系统内核的版本没有一致。也有些人说是编译器版本不同造成的,觉得不太可能。而且也有高人指点,明确这跟编译器无关,就是源码问题。网上找的帖子确实未能解决掉这个问题。
解决办法:使用PC自带的头文件,首先用uname -a查看自己内核版本,比如我的是:
Linux yangm-u104 2.6.32-29-generic #58-Ubuntu SMP Fri Feb 11 19:00:09 UTC 2011 i686 GNU/Linux
于是在Makefile中将路径改为:
KERNELDIR := /lib/modules/2.6.32-29-generic
或者KERNELDIR := /lib/modules/$(shell uname -r)/build
再次编译,成功通过。