linux 编译iptables1.62 并移植arm

linux 编译iptables1.62 并移植arm

可以参考博客:【embedded】iptables移植到ARM Linux教程

下载源码 iptables-1.6.2.tar.bz2 :https://www.netfilter.org/pub/iptables/
在这里插入图片描述


1.解压文件:

tar jxvf iptables-1.6.2.tar.bz2

2.在总的编译文件/mtk7561/apps/private/make_apps框架下末尾加入

ifeq ($(strip $(TCSUPPORT_TOZED_OUT)), y)
iptables162:
	echo -e "\033[1;34mBuild iptabels-1.6.2\033[0m"
	cd $(APP_IPTABLES162_DIR)  && ./configure --host=$(COMPILE_TOOLCHAIN) --prefix=$(APP_IPTABLES162_DIR)/my_install --enable-static \
	--disable-shared --disable-nftables --with-kernel=$(IPTABLE_KERNEL_DIR)
	make -C $(APP_IPTABLES162_DIR) CC=$(CROSS)gcc AR=$(CROSS)ar RANLIB=$(CROSS)ranlib LD=$(CROSS)ld clean
	make -C $(APP_IPTABLES162_DIR) CC=$(CROSS)gcc AR=$(CROSS)ar RANLIB=$(CROSS)ranlib LD=$(CROSS)ld
	make -C $(APP_IPTABLES162_DIR) CC=$(CROSS)gcc AR=$(CROSS)ar RANLIB=$(CROSS)ranlib LD=$(CROSS)ld install

	if test -e $(APP_IPTABLES162_DIR)/my_install/sbin/xtables-multi; \
	then echo "Compile iptables 1.6.2 success"; \
	else echo "Compile iptables 1.6.2 error!"; exit 1; \
	fi
	$(STRIP) --strip-unneeded $(APP_IPTABLES162_DIR)/my_install/sbin/xtables-multi; \
	cp -fd $(APP_IPTABLES162_DIR)/my_install/sbin/*  $(FILESYSTEM_DIR)/usr/bin/

else

endif

在/mtk7561/Project/dir.mak加入:

APP_IPTABLES162_DIR=$(APP_PUBLIC_DIR)/iptables-1.6.2
export APP_IPTABLES162_DIR

3.编译执行报错,提示错误:‘union bpf_attr’没有名为‘pathname’的成员,错误:‘BPF_OBJ_GET’未声明(在此函数内第一次使用)。

./cool 1 iptables162

在这里插入图片描述

解决办法:
删掉libxt_bpf.c文件

4.报错 Fatal: can’t open lock file /run/xtables.lock: No such file or directory

在这里插入图片描述

解决办法:到源码里修改该路径,因为我板子里并没有/run目录
在这里插入图片描述
修改路径为/tmp/var/lock/
在这里插入图片描述

再次运行:成功了
在这里插入图片描述

题外话:如何找到交叉编译工具链

最简单的方法是随便编个程序打印出来
在总的编译文件/mtk7561/apps/private/make_apps框架下末尾加入:

xxno:
	@echo -e "交叉编译工具链:\033[1;34m$(COMPILE_TOOLCHAIN)\033[0m"

makefile中,怎么忽略报错,命令执行前加 -,怎么不打印具体执行了命令前面加 @

在这里插入图片描述
即可找到交叉编译工具链 mipsel-buildroot-linux-uclibc

/opt/mtk7561/mipsel-linux-uclibc-4.6.3-kernel3.18/usr/bin/mipsel-buildroot-linux-uclibc-gcc -mips32r2 -msoft-float
/opt/mtk7561/mipsel-linux-uclibc-4.6.3-kernel3.18/usr/bin/mipsel-buildroot-linux-uclibc-g++ -mips32r2 -msoft-float

同理打印下$(STRIP) ,该指令可以大大缩减文件大小,据说是减少调试信息。

xxno:
	@echo -e "交叉编译工具链STRIP:\033[1;34m$(STRIP)\033[0m"

在这里插入图片描述
即可找到 : mipsel-buildroot-linux-uclibc-strip


移植ipset和libmnl.so

1.将ipset复制到/home/xiening/mtk7561/filesystem/usr/bin

 chmod +x ipset

2.复制libmnl.so.0.2.0到/home/xiening/mtk7561/filesystem/lib

chmod 777 libmnl.so.0.2.0
ln -sf libmnl.so.0.2.0 libmnl.so
ln -sf libmnl.so.0.2.0 libmnl.so.0
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值