Как узнать, какая версия GTK+ установлена ​​в Ubuntu?

Мне нужно определить, какая версия GTK+ установлена ​​на Ubuntu

Человек, похоже, не помогает

14 ответов

Решение

Это предложение скажет вам, какая дополнительная версия 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

Это не так уж и сложно.

Просто проверьте версию утилит gtk+ toolkit в терминале:

gtk-launch --version

получить версию 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'

Вы также можете просто скомпилировать следующую программу и запустить ее на своем компьютере.

#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

Я думаю, что независимый от распределения способ:

gtk-config --version

Вы также можете просто открыть synaptic и искать libgtk, он покажет вам, какая именно библиотека установлена.

Так как apt-cache policy будет перечислять все доступные совпадения, даже если они не установлены, я бы предложил использовать эту команду для более управляемого короткого списка пакетов, связанных с GTK, установленных в вашей системе:

apt list --installed libgtk*

Это получит версию библиотек GTK + для GTK+ 2 и GTK+ 3.

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

Пытаться:

 dpkg-query -W libgtk-3-bin

Чтобы сделать ответ более общим, чем 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. Это довольно согласуется с командой rpm на Redhat: rpm -qa | grep gtk2так что я думаю, что мой вывод правильный.

Чтобы скомпилировать и связать программу GTK сpkg-config, нам нужно имя библиотеки вместо фактического номера версии. Например, следующая команда компилирует и связывает программу GTK, использующую библиотеку GTK4:

      gcc -o program program.c `pkg-config --cflags --libs gtk`

Чтобы получить имя библиотеки для GTK, используйте следующую команду:

      pkg-config --list-all | grep gtk

Я думаю, что самый простой способ - использоватьrpm -q gtk4а затем замените 4 на 3, если вам нужна версия GTK3.

Другие вопросы по тегам