我是运行Linux内核版本2.6.33的路由器,它没有支持tun / tap支持。 cpu是MIPSlittle endien。我设置了一个buildroot并成功了 编译" Hello world"路由器的程序。
我试图从linux-kernel-2.6.33 / drivers / net / tun.c编译tun.c作为独立的内核对象。 但我还没有成功! 我使用buildroot获取内核的头文件(通过make menuconfig)并为tun.c设置Makefile:
obj-m := tun.o
KDIR=/opt/buildroot/output/build/linux-kernel-2.6.33
PWD=$(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
我用
运行make文件make ARCH = mips CROSS_COMPILE = / opt / buildroot / output / bin / buildroot-compiler -
我收到了警告和错误:
警告:缺少符号版本转储/opt/buildroot/output/build/linux-kernel-2.6.33/Module.symvers;模块没有依赖关系和modversions。
include / linux / mmzone.h:18:30:fatel error:generated / bounds.h。没有这样的或目录 。#include
我的哪一步是错的?
答案 0 :(得分:2)
我打赌你正试图建立一个纯粹的模块,
未配置的内核源代码树。你不能这样做。你的内核树
必须,在非常至少,配置,而不是,它
应该make modules_prepare
运行在顶层。
运行cd /usr/src/linux && make modules_prepare
可以解决您的问题。