OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 511|回复: 2

求教:如何将arptables移植到阿尔法嵌入式linux上?

[复制链接]

9

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2023-3-29
在线时间
12 小时
发表于 2024-5-31 15:16:32 | 显示全部楼层 |阅读模式
1金钱
就着上次的帖子,想尝试使用arptables抵挡arp广播风暴引起的linux软中断,奈何个人水平太差,修改Makefile后,进行交叉编译一直报错,实在找不到原因。所以想请教各位大佬将arptables移植到嵌入式linux上的方法。


下面是本人修改的Makefile和交叉编译报错信息:

1. Makefile

  1. ARPTABLES_VERSION:=0.0.3-3

  2. KERNEL_DIR:=/home/yaofeng/linux/kernel_src # 原来为KERNEL_DIR:=./

  3. CC=arm-linux-gnueabihf-gcc # 原来没有这项,使用系统默认gcc

  4. PREFIX:=/home/yaofeng/linux/nfs/share_smba/tool/arptables/install # 根据对该Makefile的理解,这个应该是输出文件的存放路径,故自定义了,便于移植的时候查找

  5. LIBDIR:=$(PREFIX)/lib
  6. BINDIR:=$(PREFIX)/sbin
  7. MANDIR:=$(PREFIX)/man
  8. INITDIR:=/etc/rc.d/init.d
  9. SYSCONFIGDIR:=/etc/sysconfig
  10. DESTDIR:=

  11. COPT_FLAGS:=-O2
  12. CFLAGS:=$(COPT_FLAGS) -Wall -Wunused -I$(KERNEL_DIR)/include/ -Iinclude/ -DARPTABLES_VERSION="$(ARPTABLES_VERSION)" #-g -DDEBUG #-pg # -DARPTC_DEBUG

  13. ifndef ARPT_LIBDIR
  14. ARPT_LIBDIR:=$(LIBDIR)/arptables
  15. endif

  16. include extensions/Makefile

  17. all: arptables

  18. arptables.o: arptables.c
  19.         $(CC) $(CFLAGS) -c -o $[url=home.php?mod=space&uid=95564]@[/url] [        DISCUZ_CODE_0        ]lt;

  20. arptables-standalone.o: arptables-standalone.c
  21.         [url=home.php?mod=space&uid=3970]@ECHO[/url] "EXT_OBJS = $(EXT_OBJS)"
  22.         $(CC) $(CFLAGS) -c -o $@ [        DISCUZ_CODE_0        ]lt;

  23. libarptc/libarptc.o: libarptc/libarptc.c libarptc/libarptc_incl.c
  24.         $(CC) $(CFLAGS) -c -o $@ [        DISCUZ_CODE_0        ]lt;

  25. arptables: arptables-standalone.o arptables.o libarptc/libarptc.o $(EXT_OBJS)
  26.         $(CC) $(CFLAGS) -o $@ $^

  27. $(DESTDIR)$(MANDIR)/man8/arptables.8: arptables.8
  28.         mkdir -p $(@D)
  29.         install -m 0644 -o root -g root [        DISCUZ_CODE_0        ]lt; $@

  30. $(DESTDIR)$(BINDIR)/arptables: arptables
  31.         mkdir -p $(DESTDIR)$(BINDIR)
  32.         install -m 0755 -o root -g root [        DISCUZ_CODE_0        ]lt; $@

  33. tmp1:=$(shell printf $(BINDIR) | sed 's/\//\\\//g')
  34. tmp2:=$(shell printf $(SYSCONFIGDIR) | sed 's/\//\\\//g')
  35. .PHONY: scripts
  36. scripts: arptables-save arptables-restore arptables.sysv
  37.         cat arptables-save | sed 's/__EXEC_PATH__/$(tmp1)/g' > arptables-save_
  38.         install -m 0755 -o root -g root arptables-save_ $(DESTDIR)$(BINDIR)/arptables-save
  39.         cat arptables-restore | sed 's/__EXEC_PATH__/$(tmp1)/g' > arptables-restore_
  40.         install -m 0755 -o root -g root arptables-restore_ $(DESTDIR)$(BINDIR)/arptables-restore
  41.         cat arptables.sysv | sed 's/__EXEC_PATH__/$(tmp1)/g' | sed 's/__SYSCONFIG__/$(tmp2)/g' > arptables.sysv_
  42.         install -m 0755 -o root -g root arptables.sysv_ $(DESTDIR)$(INITDIR)/arptables
  43.         rm -f arptables-save_ arptables-restore_ arptables.sysv_

  44. .PHONY: install
  45. install: $(DESTDIR)$(MANDIR)/man8/arptables.8 $(DESTDIR)$(BINDIR)/arptables scripts

  46. .PHONY: clean
  47. clean:
  48.         rm -f arptables
  49.         rm -f *.o *~
  50.         rm -f extensions/*.o extensions/*~
  51.         rm -f libarptc/*.o libarptc/*~
  52.         rm -f include/*~ include/libarptc/*~

  53. DIR:=arptables-v$(ARPTABLES_VERSION)
  54. CVSDIRS:=CVS extensions/CVS libarptc/CVS include/CVS include/libarptc/CVS
  55. # This is used to make a new userspace release
  56. .PHONY: release
  57. release:
  58.         rm -rf $(CVSDIRS)
  59.         mkdir -p include/linux/netfilter_arp
  60.         install -m 0644 -o root -g root \
  61.                 $(KERNEL_DIR)/include/linux/netfilter_arp.h include/linux/
  62.         install -m 0644 -o root -g root \
  63.                 $(KERNEL_DIR)/include/linux/netfilter_arp/*.h \
  64.                 include/linux/netfilter_arp/
  65.         install -m 0644 -o root -g root \
  66.                 include/arp_tables.h include/linux/netfilter_arp/arp_tables.h
  67.         make clean
  68.         cd ..;tar -c $(DIR) | gzip >$(DIR).tar.gz
复制代码

2. 报错信息

然后进行交叉编译,在Makefile存在的路径下执行make,会报如下错误:

arm-linux-gnueabihf-gcc -O2 -Wall -Wunused -I/home/yaofeng/linux/kernel_src/include/ -Iinclude/ -DARPTABLES_VERSION=\"0.0.3-3\"  -c -o arptables-standalone.o arptables-standalone.c
In file included from /home/yaofeng/linux/kernel_src/include/linux/kernel.h:6:0,
                 from /home/yaofeng/linux/kernel_src/include/linux/skbuff.h:17,
                 from /home/yaofeng/linux/kernel_src/include/linux/if_ether.h:23,
                 from /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/netinet/if_ether.h:25,
                 from /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/netinet/ether.h:25,
                 from include/libarptc/arpt_kernel_headers.h:14,
                 from include/libarptc/libarptc.h:5,
                 from include/arptables.h:5,
                 from arptables-standalone.c:38:
/home/yaofeng/linux/kernel_src/include/linux/linkage.h:7:25: 致命错误: asm/linkage.h:没有那个文件或目录
#include <asm/linkage.h>
                         ^
编译中断。
Makefile:29: recipe for target 'arptables-standalone.o' failed
make: *** [arptables-standalone.o] Error 1


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

80

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1027
金钱
1027
注册时间
2019-1-5
在线时间
243 小时
发表于 2024-5-31 16:41:01 | 显示全部楼层
KERNEL_DIR 这指定头文件搜索目录是必须的吗?
错误写的很清楚,/home/yaofeng/linux/kernel_src/include/linux/linkage.h 是你指定的头文件搜索目录文件在编译时找不到依赖路径的文件,如果你并没有用到这个文件,最简单的就是删除对应的CFLAGS中的 -I$(KERNEL_DIR)/include/
回复

使用道具 举报

9

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2023-3-29
在线时间
12 小时
 楼主| 发表于 2024-6-2 18:28:32 | 显示全部楼层
s2333 发表于 2024-5-31 16:41
KERNEL_DIR 这指定头文件搜索目录是必须的吗?
错误写的很清楚,/home/yaofeng/linux/kernel_src/include/ ...

指定头文件搜索目录是必须的,原Makefile就是这么写的,我只是将内核源码路径换成我这里的内核源码路径
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 09:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表