Рейтинг:5

Как скомпилировать приложение GTK4 в Ubuntu 21.10?

флаг kr

Я пытаюсь скомпилировать приложение C GUI, используя GTK4. мне ранее сказали здесь что и Ubuntu 21.04, и 21.10 будут иметь как GTK3, так и GTK4. Однако, когда я установил Ubuntu 21.04, присутствовал только GTK3. Затем я выполнил dist-upgrade до 21.10 и обнаружил, что обе версии GTK являются родными:

пользователь@пользователь: dpkg -l libgtk* | grep -e '^i' | grep -e 'libgtk-*[0-9]'
ii libgtk-3-0:amd64 3.24.30-1ubuntu1 amd64 Библиотека графического пользовательского интерфейса GTK
ii libgtk-3-bin 3.24.30-1ubuntu1 amd64 программы для библиотеки графического пользовательского интерфейса GTK
ii libgtk-3-common 3.24.30-1ubuntu1 все общие файлы для библиотеки графического пользовательского интерфейса GTK
ii libgtk-3-dev:amd64 3.24.30-1ubuntu1 файлы разработки amd64 для библиотеки GTK
ii libgtk-3-doc 3.24.30-1ubuntu1 вся документация для библиотеки графического пользовательского интерфейса GTK
ii libgtk-4-1:amd64 4.4.0+ds1-5 amd64 GTK библиотека графического пользовательского интерфейса
ii libgtk-4-bin 4.4.0+ds1-5 amd64 программы для библиотеки графического пользовательского интерфейса GTK
ii libgtk-4-common 4.4.0+ds1-5 все общие файлы для библиотеки графического пользовательского интерфейса GTK
ii libgtk2.0-0:amd64 2.24.33-2ubuntu1 amd64 Библиотека графического пользовательского интерфейса GTK — старая версия
ii libgtk2.0-bin 2.24.33-2ubuntu1 amd64 программы для библиотеки графического пользовательского интерфейса GTK
ii libgtk2.0-common 2.24.33-2ubuntu1 все общие файлы для библиотеки графического пользовательского интерфейса GTK
ii libgtk3-perl 0.038-1 все привязки Perl для библиотеки графического пользовательского интерфейса GTK+

Просто дважды проверьте версию Ubuntu:

пользователь@пользователь: lsb_release -a
Нет доступных модулей LSB.
Идентификатор дистрибьютора: Ubuntu
Описание: Убунту 21.10
Релиз: 21.10
Кодовое имя: озорник

ГТК страница говорит использовать следующее для компиляции приложения GTK4 с использованием pkg-config:

gcc $( pkg-config --cflags gtk4 ) -o пример-0 пример-0.c $( pkg-config --libs gtk4 )

Это очень похоже на предыдущие версии GTK. Для GTK3 это было:

gcc $( pkg-config --cflags gtk+-3.0 ) -o example-0 example-0.c $( pkg-config --libs gtk+-3.0 )

Однако попытка скомпилировать программу с использованием GTK4 приводит к:

пользователь@пользователь: сделать
Пакет gtk4 не найден в пути поиска pkg-config.
Возможно, вам следует добавить каталог, содержащий `gtk4.pc'
в переменную среды PKG_CONFIG_PATH
Пакет «gtk4» не найден

Итак, на основании здесь я побежал:

пользователь@пользователь: pkg-config --variable pc_path pkg-config
/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib /pkgconfig:/usr/доля/pkgconfig

При поиске по всем этим путям я нахожу только файлы .pc, связанные с GTK, в /usr/lib/x86_64-linux-gnu/pkgconfig и я ничего не нахожу для GTK4. я нахожу gtk+-3.0.пк там хотя. Итак, мой вопрос: если GTK4 является родным для Ubuntu 21.10, почему файлы pkg-config отсутствуют? Где их взять, чтобы скомпилировать с помощью pkg-config?

ВНИМАНИЕ: у меня недостаточно репутации для создания gtk4 тег. Может ли кто-то с достаточной репутацией сделать это?

флаг us
У вас установлен `libgtk-4-dev`? Если нет, установите его с помощью «sudo apt install libgtk-4-dev».
Leigh K avatar
флаг kr
Нет, я этого не делал, и это решило проблему. Не знаю, зачем это было нужно, если GTK4 присутствовал в ОС без моей загрузки.
флаг us
Его не было, он доступен в репозиториях для скачивания (так же, как и рабочий стол KDE доступен в репозиториях, но, скорее всего, он у вас не установлен). Его нет по умолчанию, потому что он потребуется очень небольшому проценту пользователей (только тем, кто разрабатывает приложения GTK4).
флаг us
Я создал тег gtk4.
Рейтинг:6
флаг us

Вам нужно будет установить libgtk-4-dev, с командой

sudo apt установить libgtk-4-dev

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.