Linux 以100到300KB的顺序构建定制的小型TCPDUMP可执行文件

Linux 以100到300KB的顺序构建定制的小型TCPDUMP可执行文件,linux,build,build-process,tcpdump,Linux,Build,Build Process,Tcpdump,我需要为我正在进行的嵌入式项目构建一个小规模的tcpdump。由于我的嵌入式设备的内存大小有限,我需要在构建TCPDUMP时去掉所有不需要的功能。我的目标是使tcpdump可执行文件的大小小于300KB。在使用“strip tcpdump option”并在configure中禁用包选项之后,我已经达到了750KB。为了实现这一点,我想删除tcpdump的所有协议解码功能。我希望tcpdump不再具有十六进制转储功能。我在下面列出了一个需要删除的不需要的协议的初始列表 print-802_11.

我需要为我正在进行的嵌入式项目构建一个小规模的tcpdump。由于我的嵌入式设备的内存大小有限,我需要在构建TCPDUMP时去掉所有不需要的功能。我的目标是使tcpdump可执行文件的大小小于300KB。在使用“strip tcpdump option”并在configure中禁用包选项之后,我已经达到了750KB。为了实现这一点,我想删除tcpdump的所有协议解码功能。我希望tcpdump不再具有十六进制转储功能。我在下面列出了一个需要删除的不需要的协议的初始列表

print-802_11.c
print-802_15_4.c
print-ah.c
print-ahcp.c
print-aodv.c
print-aoe.c
print-ap1394.c
print-atalk.c
print-atm.c
print-babel.c
print-bootp.C
print-bt.c
print-calm-fast.c
print-carp.c
print-cdp.c
print-cfm.c
print-chdlc.c
print-cip.c
print-cnfp.c
print-dccp.c
print-decnet.c
print-dtp.c
print-dvmrp.c
print-eap.c
print-egp.c
print-eigrp.c
print-enc.c
print-esp.c
print-fddi.c
print-forces.c
print-ipx.c
print-isakmp.c
print-isoclns.c
print-juniper.c
print-krb.c
print-lane.c
print-m3ua.c
print-sip.c
print-sl.c
print-sll.c
print-sunatm.c
print-zephyr.c
print-usb.c
print-vjc.c
print-vqp.c
print-timed.c
print-tipc.c
print-token.c
我开始从Makefile.in中删除这些函数,并在源代码中手动删除函数调用。但后来我意识到这种方法是不可伸缩的

有更好的方法吗?通过某种方式使用配置选项

我是新来的。所以请解释一下

有更好的方法吗?通过某种方式使用配置选项

不,没有此类配置选项。你必须用不可伸缩的方式来做

“我想删除tcpdump.I的所有协议解码功能 希望tcpdump不再具有十六进制转储功能。[…]是 有更好的办法吗?”

我认为有,但方法非常不同

如果您只想从
tcpdump
中获取以下信息:

  • 指定接口的能力

  • 是否将此接口设置为混杂模式,如果是Wi-Fi接口,则设置为监视模式

  • 应用捕获过滤器

  • 然后将输出放入文件中或作为十六进制到标准输出

…您最好使用
libpcap
(这就是
tcpdump
使用的BTW)从头开始编写自己的

这应该不超过100-400行C代码,这取决于您想要的选项,您将有一个非常非常小的可执行文件,并且没有比
tcpdump
更多的依赖项,这需要
libpcap
。所有的复杂性都在解剖中,一旦你去除了所有这些,你所拥有的基本上就是。。。一个
pcap
循环

这并不难,在我看来,这比你的方法要少得多,而且更有趣

首先有一个教程(阅读30-60分钟):

…在本教程结束时,您已经掌握了程序的核心

您可以在相关SO标签中找到大量信息(并提出问题):


…并且有大约70个写得很好的手册页记录完整的
pcap
API(您最终可能会使用其中的10-20个)。

您正在使用哪个库来构建tcpdump?uclibc?