Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

从 GTK+ 2 迁移到 GTK+ 3

如何实现迁移

首先要完成 ReplaceDeprecatedGtkGLibFunctionUsage,然后再调查迁移所需完成的工作。这些工作项可以在此处列出并加以评论。

显然,Wireshark source code 需要兼容范围很广的 GTK+ 2 和 3 版本。这可能导致在使用较低版本 GTK+ 2 编译时,某些功能不可用,或者需要基于可用版本采用不同实现。

我们也可以选择让 Wireshark 2.0 要求 GTK+ 3.0,这将允许我们大幅清理代码。

源代码中的 GTK 版本识别

使用 macro GTK_CHECK_VERSION 来确定应面向哪个版本的 API 进行编程。

GDK key names

其中一个变化是 GDK key names 的变化。为便于移植,提供了一个 compatability header:gdkkeysyms-compat.h。该 header 随 GTK+ 2.22 出现,但在 GTK+ 3 中不再从 gdkkeysyms.h 自动包含。

我认为 configure 应该查找它,如果找到则定义 HAVE_GDKKEYSYMS_H。之后在包含 gdkkeysyms.h 之前应检查该 symbol。

备注

在 Windows 上使用 GTK 2.22 构建 Wireshark

截至 revision 36623,我们使用 GTK+ 2.22 构建。Windows 版 2.24 可能还需要一些时间,见此处。Wireshark 现在使用 GTK 2.24(备注写于 2013-02,但它已经存在一段时间了)。

在 *NIX 上使用 GTK+ 3 构建 Wireshark

截至 revision 35918,Wireshark 的 configure script 有一个“--with-gtk3”选项,它会尝试在本地系统上查找 GTK+ 3(可与 GTK+ 2 并行安装)并使用它。CMake 用户可以使用选项 ENABLE_GTK3=ON。

不过目前编译仍会失败(2011 年 6 月 20 日),但它应该能推动事情向前发展。详情可参见 Wireshark sources 中的 gtk/STATUS.GTK3。

Wireshark 现在可以使用 GTK3 构建(2011 年 8 月 31 日)。

在 *NIX 上使用 GTK+ 3.2 构建 Wireshark

Wireshark 可以使用 GTK3.2 构建(2011 年 12 月 29 日)。GTK+ 3.2 弃用了 GtkHBox 和 GtkVBox,而 Wireshark 广泛使用它们,因此在使用 GTK+ 3.2 或更新版本构建时,目前不能使用 GTK_DISABLE_DEPRECATED。configure.in 已在 revision 40326 中打补丁。通过引入 ws_gtk_box_new() 修复后,我们现在可以使用 GTK_DISABLE_DEPRECATED 构建(备注写于 2013-02)。

Imported from https://wiki.wireshark.org/GoingGTK3 on 2020-08-11 23:14:18 UTC

相关 Wireshark Wiki 页面

网络分析技术档案