Makefile 如何编译这个插件?

Makefile 如何编译这个插件?,makefile,gnu,automake,wireshark,wireshark-dissector,Makefile,Gnu,Automake,Wireshark,Wireshark Dissector,我正在学习foo解析器示例,但想知道如何编译它 此链接中显示了foo解析器示例: 您会注意到它提到interlink目录包含我可以使用的支持文件的好例子,并且我需要修改Makefile.am和Makefile.common等。 我修改了它们以反映foo模块 但是,现在我想知道如何构建它。我试着运行automake,但它抱怨没有configure.in。对不起,我还不太熟悉gnu构建环境 此外,是否可以独立构建此模块?还是我需要所有其他可用的wireshark资源?当然,我已经在ubuntu下安

我正在学习foo解析器示例,但想知道如何编译它

此链接中显示了foo解析器示例:

您会注意到它提到interlink目录包含我可以使用的支持文件的好例子,并且我需要修改Makefile.am和Makefile.common等。 我修改了它们以反映foo模块

但是,现在我想知道如何构建它。我试着运行automake,但它抱怨没有configure.in。对不起,我还不太熟悉gnu构建环境


此外,是否可以独立构建此模块?还是我需要所有其他可用的wireshark资源?当然,我已经在ubuntu下安装了wireshark dev。

回答了我自己的问题

看来我必须遵循Wireshark源代码中的说明。 i、 e.doc/README.plugins


提供为Wireshark构建插件所需的所有信息。

我完成了README.plugins过程,这里是我得到的:

1) 在插件目录下,重命名

  • Custom.m4.example到Custom.m4
  • Custom.make.Custom.make示例
  • Custom.nmake.example到Custom.nmake
2) 将这些文件中出现的所有foo重命名为您的协议名

3) 转到顶级wireshark目录,运行autogen并将其配置为根目录

./autogen.sh
./configure
旁注:确保在这些步骤中没有警告或错误。要正确编译您的插件,请将以下文件从gryphon插件复制到新创建的协议文件夹以及源文件,并用您的协议名称替换所有gryphon事件

  • 作者
  • 临摹
  • 变更日志
  • CMakeLists.txt
  • Makefile.am
  • Makefile.common
  • Makefile.in
  • Makefile.nmake
  • moduleinfo.h
  • moduleinfo.nmake
  • plugin.c
  • plugin.rc.in
4) 使用以下命令编译插件。运行makeinstall以防万一

make -C plugins
make install
5) 最后使用以下命令运行Wireshark

WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1 ./wireshark
6) 如果一切顺利,您将在关于Wireshark的“插件”选项卡下看到您的插件。起初我在插件版本上遇到了一些问题。在#include“config.h”之后包含以下行,修复了它:

#include "moduleinfo.h"

请注意,wireshark构建是如何使用自动工具的一个糟糕的例子(或者,它可能是如何彻底销毁自动工具的一个极好的例子)。作为一个实用的技巧,您可能希望完全避免它们的引导,而只运行autoreconf。(这将为您构建configure.in并运行automake。)是否要解释一下它应该如何使用autotools?@willampersell Wireshark中的autotools配置到底有什么问题?只有
autogen.sh
脚本、
configure.ac
或一些
Makefile.am
s?您认为单独的
Makefile.common
有问题吗?(这些都是与用于Windows的nmake文件共享的。)好吧,我从2009年左右就没有看过Wireshark,我很确定他们很久以前就离开了自动工具。但是,正如我所记得的,他们使用了很多在m4宏中执行得更好的样板文件。它们公然违反了一个基本的名称空间规则,对它们定义的大多数(如果不是全部的话)宏使用保留名称“AC_*”。名称AC_WIRESHARK很常见,但前缀AC_只能由autoconf本身定义的宏使用。