Как вы узнаете, какая версия GTK + установлена в Ubuntu?
Вопрос
Мне нужно определить, какая версия GTK + установлена в Ubuntu
Человек, похоже, ничем не помогает
Решение
Это предложение сообщит вам, какая младшая версия 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
Другие советы
$ dpkg -s libgtk2.0-0|grep '^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
Вы также можете просто открыть synaptic и выполнить поиск libgtk, он покажет вам, какая именно библиотека установлена.
Попробуй:
dpkg-query -W libgtk-3-bin
Я думаю, что независимый от распространения способ - это:
gtk-config --version
Это позволит получить версию библиотек GTK + для GTK + 2 и GTK + 3.
dpkg -l | egrep "libgtk(2.0-0|-3-0)"
Поскольку основные версии можно устанавливать параллельно, у вас могут быть обе в вашей системе, как в моем случае, поэтому приведенная выше команда возвращает это в моей надежной системе Ubuntu:
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
, поэтому я думаю, что мой вывод верен.