2013-06-04 45 views
4

对于我的论文,我正在使用协议ARAN创建一个Manet。要安装我使用this manual的协议,但第一步,创造trace_route的,我收到错误,如:linux/module.h没有这样的文件或目录

-linux/module.h: No such file or directory 

-linux/procs_Fs: No such file or directory 

-linux/skbuff: No such file or directory 

我在网上搜索,发现这个问题是在标题,但我没有找到解决方案...

PS我正在使用Ubuntu 10.04 LTS内核2.6.33重新编译

回答

9

您错过了Linux内核头文件,它允许您针对Linux内核编译代码。

Ubuntu的只安装标题:

$ sudo apt-get install linux-headers-$(uname -r) 

Ubuntu的安装整个Linux内核源:

$ sudo apt-get install linux-source 

请注意,您应该使用内核头文件是匹配你正在运行的内核。

3
**/*source file name is basic.c */** 

#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, cruel world\n"); 
} 
module_init(hello_init); 
module_exit(hello_exit); 

=====================================

现在使文件的Ubuntu

/*在乌尔终端上第一类型$(使用uname -r)然后U将得到的版本.. 正在使用乌尔系统*/

obj-m +=basic.o 

KDIR =//usr/src/linux-headers-3.13.0-44-generic 

all: 
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules 
clean: 
rm -rf *.o *.ko *.mod.* *.symvers *.order 

=== =============================================

运行的代码在“Linux设备驱动程序,第三版”的例子

$sudo insmode basic.ko 
$dmesg 
u will get the output 
$sudo rmmod basic.ko 
$dmesg 
+0

尼斯工作示例 - 谢谢。 –

+0

谢谢先生@SimonPeverett –

相关问题