Мені потрібно визначити, яка версія 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
libgtk*
in dpkg -l libgtk*
повинен бути укладений в одинарні лапки ( dpkg -l 'libgtk*'
), щоб запобігти розширенню символів підстановки на рівні оболонки.
отримати версію 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]#
--libs gtk+-3.0
замість цього, я отримую 3.10.8. Здається, це просто говорить мені, що у мене є файли розробки для обох, але не якими я користуюся на даний момент.
Спробуй,
apt-cache policy libgtk2.0-0 libgtk-3-0
або,
dpkg -l libgtk2.0-0 libgtk-3-0
Ви також можете просто відкрити synaptic і шукати libgtk, він покаже вам, яка саме бібліотека встановлена.
Я думаю, що спосіб незалежного розподілу:
gtk-config --version
Спробуйте:
dpkg-query -W libgtk-3-bin
2
на 3
.
Це отримає версію бібліотек 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 +, за допомогою певної магії, це дає:
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
тому я вважаю, що мій висновок правильний.