首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对libwireshark进行编译

针对libwireshark进行编译
EN

Stack Overflow用户
提问于 2010-11-27 09:37:23
回答 1查看 1.8K关注 0票数 0

我正在尝试在Ubuntu10.10上编译一个针对libwireshark的程序。我已经安装了wireshark-dev包,它已经安装了/usr/lib/wireshark/usr/include/wireshark中的文件。

我的C源代码文件头包含一个#include <epan/epan.h>指令,我的gcc命令行参数如下:

代码语言:javascript
复制
$ gcc -I/usr/include/wireshark `pkg-config --libs --cflags glib-2.0` -Wall -o test.out test.c -L/usr/lib/wireshark -lwireshark

但是,这会返回许多错误,包括:

代码语言:javascript
复制
/usr/lib/gcc/i686-linux-gnu/4.4.5/include/varargs.h:4: error: #error "GCC no longer implements <varargs.h>."
/usr/include/wireshark/epan/ftypes/ftypes.h:258: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘union’

我应该做些什么来纠正这些问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-27 12:15:44

这似乎是一个用户不友好的打包和代码组织的简单案例。您需要首先包含Wireshark的"config“报头。我会这样写:

代码语言:javascript
复制
#include <wireshark/config.h> /* needed by epan */
#include <epan/epan.h>

请确保在包含此库中的标头时首先执行此操作。

我怎么知道的?我深入研究了epan/proto.h,发现只有在没有设置HAVE_STDARG的情况下,它才有条件地包含varargs.h。然后我在/usr/include/wireshark/中使用grep'd,发现这个变量是在config.h中设置的,所以我想可能有必要包含它,看哪,它确实是。

我还需要添加-lwiretap以满足与libwireshark的链接。

wireshark-dev组织中的另一个nit是它(在包级)不依赖于wireshark-common,即使后者确实提供了前者符号链接到的实际libwireshark.so。因此,您应该确保安装了wireshark-common,或者/usr/lib/libwireshark.so及其引用对象存在。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4289640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档