您如何确定Ubuntu上安装了哪个版本的GTK +?


Answers:


71

此建议将告诉您安装了哪个次要版本2.0。不同的主要版本将具有不同的程序包名称,因为它们可以共存于系统上(以支持使用旧版本构建的应用程序)。

即使对于通常只允许您在系统上使用一个版本的开发文件,也可以在同一系统上使用gtk 1.x版本和gtk 2.0版本(include文件位于名为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版本?
阿维·梅亨瓦尔

pkg-config程序是Windows安装的一部分。因此,在命令行中编写pkg-config --modversion gtk + -2.0应该可以。
pepan

1
可以肯定的是libgtk*,必须将indpkg -l libgtk*括在单引号(dpkg -l 'libgtk*')中,以防止在外壳程序级别进行通配符扩展。
sevko

如果没有glob匹配,并且这里可能没有,则它将不扩展地传递给命令,因此可以正常工作。但是,引用它确实会更安全。
马克·贝克


24

您可以使用以下命令:

$ 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'9

gtkv.c:1:21:致命错误:gtk / gtk.h:没有此类文件或目录
niken

@tsbertalan“目前使用”取决于您的各种应用所链接的GTK版本。
Chimera



3

这不是那么困难。

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

gtk-launch --version

2

我认为与发行无关的方式是:

gtk-config --version


2
尽管gtk-config与发行版无关,但仅适用于GTK1.x。如我在回答中所说,较新版本的正确方法是使用pkg-config。
Mark Ba​​ker


1

这将获取GTK + 2和GTK + 3的GTK +库的版本。

dpkg -l | egrep "libgtk(2.0-0|-3-0)"

由于主要版本可以并行安装,因此您的系统上可能同时安装了这两个版本,因此上述命令在我的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。

如果您想要的是开发文件的版本,请使用pkg-config --modversion gtk+-3.0GTK + 3例如。要使用sed魔术将其扩展到GTK +的不同主要版本,可以得到:

pkg-config --list-all | sed -ne 's/\(gtk+-[0-9]*.0\).*/\1/p' | xargs pkg-config --modversion

0

为了使答案比Ubuntu(我有Redhat)更笼统:

gtk通常安装在/ usr下,但也可能位于其他位置。这应该在环境变量中可见。检查与

env | grep gtk

然后尝试查找gtk文件的存储位置。例如,使用locate和grep。

locate gtk | grep /usr/lib

这样,我发现/usr/lib64/gtk-2.0其中包含子目录2.10.0,其中包含许多.so库文件。我的结论是我有gtk +版本2.10。这与Redhat:上的rpm命令相当一致rpm -qa | grep gtk2,所以我认为我的结论是正确的。


0

因为apt-cache policy将列出所有可用的匹配项(即使未安装),所以我建议使用此命令来为系统上安装的与GTK相关的软件包的更易管理的清单:

apt list --installed libgtk*
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.