如何在Ubuntu上查找安装的GTK+版本?

109

我需要确定Ubuntu上安装了哪个版本的GTK+

看起来Man页没有提供帮助

14个回答

84

这个建议可以告诉您已安装的2.0小版本号。不同的主要版本会有不同的软件包名称,因为它们可以共存于系统中(以支持使用旧版本构建的应用程序)。

即使对于开发文件,通常只能在系统上安装一个版本,您也可以同时拥有gtk 1.x和gtk 2.0的版本(包含文件位于名为gtk-1.2或gtk-2.0的目录中)。

因此,简单地说,“系统上安装了哪个GTK版本”没有一个简单的答案。但是...

尝试像这样做:

dpkg -l libgtk* | grep -e '^i' | grep -e 'libgtk-*[0-9]'
为了列出系统上所有的libgtk包,包括-dev包,可以使用dpkg -l命令。该命令会列出dpkg知道的所有包,包括当前未安装的包,因此我使用grep命令仅列出已安装的包(以“i”开头的行)。
另一种方法是使用pkg-config,如果你只关心头文件等的版本号,这可能更好。
pkg-config --modversion gtk+

这将告诉您安装了哪个版本的GTK 1.x开发文件,并且

pkg-config --modversion gtk+-2.0

本文将告诉你如何查看GTK 2.0的版本。旧版的1.x同样有自己的gtk-config程序可以做到这一点。对于GTK+ 3也是同理:


pkg-config --modversion gtk+-3.0

1
有关 Windows 的任何建议吗?如何在 Windows 上查找安装的 GTK 版本? - avimehenwal
pkg-config程序是Windows安装的一部分。因此,在命令行中编写pkg-config --modversion gtk+-2.0应该可以工作。 - pepan
1
相信 dpkg -l libgtk* 中的 libgtk* 必须用单引号括起来 (dpkg -l 'libgtk*'),以防止在 shell 级别进行通配符扩展。 - sevko
如果没有 glob 匹配,这里可能没有,那么它将被传递给未展开的命令,因此这将起作用。但是引用它确实更安全。 - Mark Baker
检查gtkmm,请尝试:pkg-config --modversion gtkmm-3.0 - Melroy van den Berg
pkg-config --modversion gtk4 - Adam

68

这并不太难。

只需从终端检查您的 gtk+ 工具包实用程序版本即可:

gtk-launch --version

5
这应该是这个问题的解决方案。 - Baby Yoda
2
它显示版本3,但我也安装了版本4。 - Adam
1
适用于Archlinux。 - Salem
1
最佳单行代码(被接受的答案过于复杂)。 - Humpity
1
这对我来说显示的是错误的版本... - undefined
显示剩余4条评论

28

获取GTK3版本:

dpkg -s libgtk-3-0|grep '^Version'

或者只是版本号

dpkg -s libgtk-3-0|grep '^Version' | cut -d' ' -f2-

26

你可以使用这个命令:

$ dpkg -s libgtk2.0-0|grep '^Version'

1
这是获取GTK+ 2的小版本,但是现在已经有了GTK+ 3,并且GTK+ 4也即将推出。 - liberforce

9
您也可以编译以下程序并在计算机上运行它。
#include <gtk/gtk.h>
#include <glib/gprintf.h>

int main(int argc, char *argv[])
{
    /* Initialize GTK */
    gtk_init (&argc, &argv);

    g_printf("%d.%d.%d\n", gtk_major_version, gtk_minor_version, gtk_micro_version);
    return(0);
}

使用以下命令进行编译(假设上述源文件名为version.c):

gcc version.c -o version `pkg-config --cflags --libs gtk+-2.0`

当你运行这个程序时,会得到一些输出。在我的旧嵌入式设备上,我得到了以下结果:
[root@n00E04B3730DF n2]# ./version 
2.10.4
[root@n00E04B3730DF n2]#

2
如果我按照你说的编译,我得到的是2.24.27。如果我改为使用--libs gtk+-3.0编译,我得到的是3.10.8。这只是告诉我我同时拥有两个版本的开发文件,但并没有告诉我当前正在使用哪一个。 - tsbertalan
gtkv.c:1:21: 致命错误:没有该文件或目录:gtk/gtk.h - niken
@tsbertalan,“目前使用”取决于您的各种应用程序链接的GTK版本。 - Chimera
它在gtk4上无法编译。gcc $(pkg-config --cflags gtk4) w.c $(pkg-config --libs gtk4) w.c: 在函数‘main’中:w.c:10:5: 错误:函数‘gtk_init’的参数太多 - Adam

7
尝试一下:
apt-cache policy libgtk2.0-0 libgtk-3-0 

或者,
dpkg -l libgtk2.0-0 libgtk-3-0

4
我认为一种与发行版无关的方法是: gtk-config --version

3
虽然 gtk-config 不依赖于特定的发行版,但它仅适用于 GTK 1.x 版本。对于更新的版本,正确的方法是使用 pkg-config,正如我在我的回答中所说的。 - Mark Baker

3
您也可以打开Synaptic并搜索libgtk,它会显示您已安装的确切库。

3

由于 apt-cache policy 列出了所有可用的匹配项,即使未安装,我建议使用此命令来获取系统上已安装的与 GTK 相关的软件包的更易管理的简短列表:

apt list --installed libgtk*

2
这将获取GTK 2、3和4版本的GTK库。
dpkg -l | egrep "libgtk(2.0-0|-3-0|-4)"

由于主要版本是并行安装的,您的系统上可能有多个版本,这是我的情况,因此在我的Ubuntu Trusty系统上,上述命令返回以下内容:

ii  libgtk-3-0:amd64                                      3.10.8-0ubuntu1.6                                   amd64        GTK+ graphical user interface library
ii  libgtk2.0-0:amd64                                     2.24.23-0ubuntu1.4                                  amd64        GTK+ graphical user interface library

这意味着我安装了GTK+ 2.24.23和3.10.8。
如果您想要的是开发文件的版本,请使用以下命令:
- 对于GTK 2,请使用pkg-config --modversion gtk+-2.0 - 对于GTK 3,请使用pkg-config --modversion gtk+-3.0 - 对于GTK 4,请使用pkg-config --modversion gtk4 (这是因为“+”从“GTK+”中删除了一段时间。)

dpkg -l | egrep "libgtk(2.0-0|-3-0|-4)" - Adam
pkg-config --list-all | sed -ne 's/(gtk[0-9].0)./\1/p' | xargs pkg-config --modversion gtk4 - Adam
@Adam:感谢你的提醒。下次不要犹豫,可以对原帖进行编辑。;-) - liberforce

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接