mzweilin / napt66

Automatically exported from code.google.com/p/napt66
38 stars 12 forks source link

(原创)交叉编译 构建基于 AR71XX 平台的 napt66 模块 (内核版本>2.6.35) #26

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
基本要求:
一:linux系统,能联网(当然你要是把相关的数据拷贝过去没
有网络也行)
二:正确的交叉编译工具链  
(我使用的是构建openwrt固件时生成的工具链,前缀为mips-openw
rt-linux-)
三:最好把交叉编译工具链的目录添加到系统变量里面(当��
�,没有也行,只是下面你填写交叉编译工具链会比较长而已�
��
编译步骤
1.下载对应版本的linux源代码 。(我的是linux 2.6.37.6 
大约70MB)
2.解压到/usr/src。            (我的是解压到 
/usr/src/linux-2.6.37.6)
3.进入linux源代码顶层目录 ,然后 make ARCH=mips 
CROSS_COMPILE=<你所对应的交叉编译链> menuconfig   
(没有<>)(我的是make ARCH=mips 
CROSS_COMPILE=mips-openwrt-linux-)(我事先已经构建了交叉编译工��
�链)
4.然后 make   (漫长的时间)
5.下载修正后的napt66源代码,解压     
(我的是解压/usr/napt66)
6.修改Makefile    
将kdir修改为你所编译的linux内核代码(我的是/usr/src/linux-2.6.3
7.6),然后在target all 最后面添加 ARCH=mips 
CROSS_COMPILE=<你所对应的交叉编译链> (和第3步的相同) ,保存
7.make 即可。然后目录下就会有napt66.ko
8.剩下的就是将napt66.ko拷贝到路由器中即可,然后insmod 
napt66.ko wan_if=eth1.1  
(可能你们的与我的接口不一样,修改即可)

希望大家有空的话多和我联系交流。QQ:447491275
附件:我构建的napt66.ko模块

Original issue reported on code.google.com by woshiyuh...@gmail.com on 30 Jun 2011 at 8:19

Attachments:

GoogleCodeExporter commented 9 years ago
请问应该如何使用openwrt的toolchain来编译?

Original comment by pentium....@gmail.com on 2 Jul 2011 at 5:31

GoogleCodeExporter commented 9 years ago
在我所写的上面第三步中明确指出了使用toolchain的方法,可��
�在构建你所使用的openwrt下,修改KDIR的目录,为你构建固件��
�产生的一个的固件,具体的我忘记了,在trunk下的大约3到4层
目录下,有空我在看一下把名字传上来

Original comment by woshiyuh...@gmail.com on 2 Jul 2011 at 7:53

GoogleCodeExporter commented 9 years ago
编译时出错:make[1]: *** No rule to make target `modules'. 
Stop.请问该如何解决?

Original comment by pentium....@gmail.com on 3 Jul 2011 at 4:49

GoogleCodeExporter commented 9 years ago
这个是Makefile的问题,仔细检查一下你的Makefile,看看是不是�
��我说的一样做的,贴上来看一下把。。

Original comment by woshiyuh...@gmail.com on 3 Jul 2011 at 6:11

GoogleCodeExporter commented 9 years ago
我的makefile
ifneq ($(KERNELRELEASE),)
#kbuild syntax. dependency relationshsip of files and target modules are listed 
here.
obj-m := napt66.o
napt66-objs := napt66_main.o napt66_conntrack.o napt66_nat.o 
napt66_hash_table.o napt66_ftp_alg.o
else
PWD  := $(shell pwd)
KVER ?= $(shell uname -r)
KDIR 
:=/home/pentium/OpenWrt-Toolchain-ar71xx-for-mips_r2-gcc-linaro_uClibc-0.9.32/to
olchain-mips_r2_gcc-linaro_uClibc-0.9.32/bin/
all:
    ARCH=mips CROSS_COMPILE=mips-openwrt-linux-
    $(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
    rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions *.symvers *.order
endif

Original comment by pentium....@gmail.com on 3 Jul 2011 at 7:23

GoogleCodeExporter commented 9 years ago
ifneq ($(KERNELRELEASE),)
#kbuild syntax. dependency relationshsip of files and target modules are listed 
here.
obj-m := napt66.o
napt66-objs := napt66_main.o napt66_conntrack.o napt66_nat.o 
napt66_hash_table.o napt66_ftp_alg.o
else
PWD  := $(shell pwd)
KVER ?= $(shell uname -r)
KDIR 
:=/home/pentium/OpenWrt-Toolchain-ar71xx-for-mips_r2-gcc-linaro_uClibc-0.9.32/to
olchain-mips_r2_gcc-linaro_uClibc-0.9.32/bin/
all:
        $(MAKE) -C $(KDIR) M=$(PWD) modules ARCH=mips CROSS_COMPILE=mips-openwrt-linux-

clean:
    rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions *.symvers *.order
endif

交叉工具链应该刚在目标的后面,另外,你的KDIR应该是错的�
��。。应该是最后一个目录是linux2.6.39.2之类的目录。。

Original comment by woshiyuh...@gmail.com on 3 Jul 2011 at 8:49

GoogleCodeExporter commented 9 years ago
修改后依然出错,请问如何解决
make -C /home/pentium/linux-2.6.39.2 M=/home/pentium/napt66 modules ARCH=mips 
CROSS_COMPILE=/home/pentium/OpenWrt-Toolchain-ar71xx-for-mips_r2-gcc-linaro_uCli
bc-0.9.32/toolchain-mips_r2_gcc-linaro_uClibc-0.9.32/mips-openwrt-linux/bin/
expr: syntax error
make[1]: Entering directory `/home/pentium/linux-2.6.39.2'
  CC [M]  /home/pentium/napt66/napt66_main.o
gcc: error trying to exec 'cc1': execvp: No such file or directory
make[2]: *** [/home/pentium/napt66/napt66_main.o] Error 1
make[1]: *** [_module_/home/pentium/napt66] Error 2
make[1]: Leaving directory `/home/pentium/linux-2.6.39.2'
make: *** [all] Error 2

Original comment by pentium....@gmail.com on 13 Jul 2011 at 10:11

GoogleCodeExporter commented 9 years ago
你设置的CROSS_COMPILE错误,按照你的应该是CROSS_COMPILE=/home/penti
um/OpenWrt-Toolchain-ar71xx-for-mips_r2-gcc-linaro_uClibc-0.9.32/toolchain-mips_
r2_gcc-linaro_uClibc-0.9.32/mips-openwrt-linux/bin/mips-openwrt-linux-
   这个表示的是交叉编译工具的前缀。

Original comment by woshiyuh...@gmail.com on 13 Jul 2011 at 11:21

GoogleCodeExporter commented 9 years ago
内核模块比我编译的还大,怎么回事呢,怎样才能变小啊

Original comment by q741...@gmail.com on 20 Sep 2011 at 1:33