我有一台运行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文件
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错误:generated / bounds.h . 没有这样的或目录 . #include
我的哪一步是错的?
1 回答
我'm betting you'试图针对纯粹的,未配置的内核源代码树构建您的模块 . 你不能这样做 . 至少,您的内核树必须进行配置,并且不止于此,它应该在顶层运行
make modules_prepare
.运行
cd /usr/src/linux && make modules_prepare
应该可以解决您的问题 .