我需要确定 Ubuntu 上安装了哪个版本的 GTK+
男人似乎没有帮助
该建议将告诉您安装了 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
获取 GTK3 版本:
dpkg -s libgtk-3-0|grep '^Version'
或者只是版本号
dpkg -s libgtk-3-0|grep '^Version' | cut -d' ' -f2-
你可以使用这个命令:
$ dpkg -s libgtk2.0-0|grep '^Version'
这并不难。
只需从终端检查您的 gtk+ 工具包实用程序版本:
gtk-launch --version
您也可以只编译以下程序并在您的机器上运行它。
#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]#
尝试,
apt-cache policy libgtk2.0-0 libgtk-3-0
或者,
dpkg -l libgtk2.0-0 libgtk-3-0
您也可以只打开 synaptic 并搜索 libgtk,它会准确显示您安装了哪个 lib。
我认为独立于分布的方式是:
gtk-config --version
尝试:
dpkg-query -W libgtk-3-bin
这将获得 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
为了使答案比 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
,所以我认为我的结论是正确的。
因为apt-cache policy
将列出所有可用的匹配项,即使未安装,我建议使用此命令来获取系统上安装的 GTK 相关软件包的更易于管理的候选清单:
apt list --installed libgtk*