Linux 如何找到GTK+的哪个版本;是否安装在Ubuntu上?

Linux 如何找到GTK+的哪个版本;是否安装在Ubuntu上?,linux,ubuntu,gtk,gnome,Linux,Ubuntu,Gtk,Gnome,我需要确定Ubuntu上安装了哪个版本的GTK+ 人似乎没有帮助您可以使用以下命令: $ dpkg -s libgtk2.0-0|grep '^Version' 将告诉您安装了2.0的哪个次要版本。不同的主要版本将具有不同的包名称,因为它们可以在系统上共存(以支持使用较旧版本构建的应用程序) 即使对于开发文件(通常只允许您在系统上拥有一个版本),您也可以在同一系统上拥有gtk 1.x版本和gtk 2.0版本(包含文件位于名为gtk-1.2或gtk-2.0的目录中) 因此,简言之,“系统上有什么

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


人似乎没有帮助

您可以使用以下命令:

$ dpkg -s libgtk2.0-0|grep '^Version'
将告诉您安装了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配置程序,可以做同样的事情。同样,对于GTK+3:

pkg-config --modversion gtk+-3.0

我认为一种独立于分销的方式是:


gtk配置--version

您也可以打开synaptic并搜索libgtk,它将准确显示安装了哪个lib。

获取GTK3版本:

dpkg -s libgtk-3-0|grep '^Version'
或者只是版本号

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

为了使答案比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
,因此我认为我的结论是正确的。

您也可以编译以下程序并在您的机器上运行它

#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);
}
当你运行这个程序时,你会得到一些输出。在我的旧嵌入式设备上,我得到以下信息:

[root@n00E04B3730DF n2]# ./version 
2.10.4
[root@n00E04B3730DF n2]#
试试看

或者

尝试:


这将获得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.0
例如gtk+3。为了将其扩展到GTK+的不同主要版本,使用一些sed魔术,这将提供:

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

由于
apt cache policy
将列出所有可用的匹配项,即使未安装,我建议您使用此命令获得系统上安装的GTK相关软件包的更易于管理的短名单:

apt列表--已安装的libgtk*

这并不难

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

gtk-launch --version

虽然gtk配置与发行版无关,但它仅适用于gtk 1.x。更新版本的正确方法是使用pkg配置,正如我在回答中所说的。对windows有什么建议吗?如何在windows上查找已安装的gtk版本?pkg配置程序是windows安装的一部分。因此,在命令行中编写pkg config--modversion gtk+-2.0应该可以工作。非常确定
dpkg-l libgtk*
中的
libgtk*
必须包含在单引号中(
dpkg-l'libgtk*'
),以防止在shell级别进行通配符扩展。如果没有全局匹配,并且可能没有全局匹配,然后它将被传递给未展开的命令,因此这将起作用。但引用它确实会更安全。要检查gtkmm,请尝试:
pkg config--modversion gtkmm-3.0
如果我按照您所说的那样编译,我会得到2.24.27。如果改用
--libsgtk+-3.0
编译,则得到3.10.8。这似乎告诉我,我有这两个方面的开发文件,但不是我目前正在使用的。gtkv.c:1:21:致命错误:gtk/gtk.h:没有这样的文件或directory@tsbertalan“当前使用”这取决于你的各种应用程序所针对的GTK版本。这是我用
2
代替
3
时唯一表现不同的答案。这是GTK+2的小版本,但GTK+3已经过时多年了,GTK+4正在进行中。
dpkg -l | egrep "libgtk(2.0-0|-3-0)"
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
pkg-config --list-all | sed -ne 's/\(gtk+-[0-9]*.0\).*/\1/p' | xargs pkg-config --modversion
gtk-launch --version