Appearance
Appearance
本页面将收集开发 Wireshark 时常见的(编译)问题。
你可能会在编译过程中或编译后遇到异常的程序行为或崩溃。
这可能是由(工作不太正常的)MSVC 构建依赖导致的,例如某些头文件发生了变化(由你自己修改或源代码树更新引起)。
遇到这类问题时,建议执行:
nmake -f Makefile.nmake distclean
以获得一个干净的构建树。
如果你第一次编译 Wireshark,或者在 Unix 和 Windows 上交叉编译同一份源代码树,你可能会遇到 MSVC 编译错误,提示缺少 unistd.h,这是因为你没有先执行:
nmake -f Makefile.nmake distclean
这一步是必需的,用于移除一些为了方便 Unix 用户而随包提供的中间文件;这些文件与 MSVC 构建不兼容。
如果你在编译时遇到以下错误:
{{{link: invalid option -- e Try `link --help' for more information.}}}
……很遗憾,link 命令同时存在于 Cygwin 和 MSVC 中,但用途完全不同;你需要使用 MSVC 的 link。如果你遇到这个错误,说明在你的环境中,Cygwin 的 link 命令优先于 MSVC 的 link。要修复此问题,可以修改 PATH 环境设置,或者直接重命名 cygwin 的 /bin 目录中的 link.exe。如果重命名它,请务必记住,Cygwin 更新可能会提供该文件的新版本,而新版本同样需要再次重命名。
编译插件时,你可能会遇到此错误消息。这意味着该特定符号没有通过 epan 目录中的 libwireshark.def 导出。你可以将它添加到自己版本的 libwireshark.def 中并重新编译 Wireshark,之后你的插件就能正常链接。不过请记住,该插件只能与你编译的 Wireshark 一起工作,因为只有该版本为动态链接导出了相应符号。请向开发者邮件列表提交请求,让该符号被包含到 libwireshark.def 的开发版本中,以便它出现在后续 Git 修订版和之后的发布版本中(如果你向开发者列表发送 libwireshark.def 的补丁会更好,这样开发者就不必手动添加它)。
如果你使用较新版本的 Visual Studio 编译插件,那么在将 dll 放入另一个系统的插件目录时,可能会遇到错误消息。由于 Wireshark 以 VS 6 编译版本分发,你需要在目标系统上执行 vcredist_x86.exe。这会让你的插件所需的 C Runtime 版本可用。如果仍然存在问题(在我的系统上,Win2000/SP4 可以工作,但在 WinXP 上我也必须执行这一步),请执行以下操作:将 manifest 信息(其中包含所需 runtime 的信息)附加到 dll。可以在插件开发目录中的 vs 命令提示符下输入 "mt.exe –manifest MyLibrary.dll.manifest -outputresource:MyLibrary.dll;2" 来完成。
导入自 https://wiki.wireshark.org/Development/CommonProblems,时间为 2020-08-11 23:12:42 UTC