Как узнать, какая версия 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-
Вы также можете просто скомпилировать следующую программу и запустить ее на своем компьютере.
#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
Чтобы сделать ответ более общим, чем 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.