2016-09-29 74 views
1

我有一個運行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後),並設置一個Makefile文件tun.c:

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 ARCH=mips CROSS_COMPILE=/opt/buildroot/output/bin/buildroot-compiler-

我得到了警告,並生成文件erros:

Warning: Symbol version dump /opt/buildroot/output/build/linux-kernel-2.6.33/Module.symvers is missing; modules will have no dependencies and modversions.

include/linux/mmzone.h:18:30: fatel error: generated/bounds.h. No such or directory .#include

我的哪一步是錯的?

+2

顯示確切的錯誤。 –

+0

@EugeneSh編輯 – ssdfdsfsd

+0

所以你正在編譯一箇舊的內核版本的模塊,然後它的意思是?你的標題說明,但我沒有看到那是你的代碼,所以我有點困惑 – jgr208

回答

2

我敢打賭,你正試圖建立一個純粹的模塊, 未配置的內核源代碼樹。你不能那樣做。內核樹 必須至少配置爲,並且更多的是,其 應該具有在頂層運行的make modules_prepare

正在運行cd /usr/src/linux && make modules_prepare應該解決您的問題。

+1

您還必須使用與電路板上使用的內核配置相對應的內核配置。另外,它不是/ usr/src/linux,而是提取的linux-2.6.33。我相應地編輯了答案。 – Arnout