5

对于我的论文,我正在使用 ARAN 协议创建一个马奈特。要安装协议,我使用的是本手册,但第一步,创建 trace_route,我收到如下错误:

-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 Kernel 2.6.33 重新编译

4

2 回答 2

10

您缺少允许您针对 Linux 内核编译代码的 Linux 内核头文件。

要在Ubuntu中仅安装标头:

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

Ubuntu中安装整个 Linux 内核源代码:

$ sudo apt-get install linux-source

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

于 2013-06-04T17:32:23.263 回答
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) 然后你会得到版本..在你的系统上使用 */

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

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

运行代码

$sudo insmode basic.ko
$dmesg
u will get the output
$sudo rmmod basic.ko
$dmesg
于 2015-03-04T20:10:14.647 回答