【定期更新】Ubuntu20.04LTS(amd64/x86_64) 下安装 GTK4(更新了4.6.2版本的安装)

本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。

Ubuntu20.04LTS(amd64) 下安装 GTK4

GTK4在安装的过程中如果发现缺少某些Library 会自动通过git同步 下载/更新 安装(并不是所有的库都会自动下载),所以最好是在科学上网的环境下,或者更换了下载源的环境下安装。


GTK4.6.2 安装

基本库以及依赖库安装

root@ubuntu: sudo apt-get update
root@ubuntu: sudo apt-get install build-essential
root@ubuntu: sudo apt-get install python3-pip
root@ubuntu: sudo apt-get install ninja-build
root@ubuntu: sudo apt-get install cmake
root@ubuntu: sudo apt-get install libglib2.0
root@ubuntu: sudo apt-get install libglib2.0-dev
root@ubuntu: sudo apt-get install git
root@ubuntu: sudo apt-get install libpng-dev
root@ubuntu: sudo apt-get install libharfbuzz-dev
root@ubuntu: sudo apt-get install libthai-dev
root@ubuntu: sudo apt-get install libxkbcommon-dev
root@ubuntu: sudo apt-get install libcairo-dev
root@ubuntu: sudo apt-get install libxml2
root@ubuntu: sudo apt-get install libxml2-dev
root@ubuntu: sudo apt-get install libwayland-dev
root@ubuntu: sudo apt-get install libxrandr-dev
root@ubuntu: sudo apt-get install libxi-dev
root@ubuntu: sudo apt-get install libxdamage-dev
root@ubuntu: sudo apt-get install libxinerama-dev
root@ubuntu: sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav libgstrtspserver-1.0-dev libges-1.0-dev libgstreamer-plugins-bad1.0-dev

安装meson最新版本

meson下载地址
下载meson-0.61.4.tar.gz

root@ubuntu: tar -xvf meson-0.61.4.tar.gz
root@ubuntu: cd meson-0.61.4
# Meson requires Python 3.6.0 or greater
root@ubuntu: pip3 install ./
root@ubuntu: meson -v #如果是0.61.4表示安装成功

如果出现下面的问题:
在这里插入图片描述
建议使用root 用户重新安装,这样就不需要添加PATH了

安装 xcursor

xcursor下载地址
根据你的Ubuntu版本下载对应的 Xcursor 库
在这里插入图片描述

root@ubuntu: tar -xvf libxcursor_1.2.0.orig.tar.gz
root@ubuntu: cd libXcursor-1.2.0/
root@ubuntu: ./configure
root@ubuntu: make
root@ubuntu: sudo make install

下载GTK4.6.2

gtk4下载地址
下载 gtk-4.6.2.tar.xz

root@ubuntu: tar -xvJf gtk-4.6.2.tar.xz
root@ubuntu: cd gtk-4.6.2
root@ubuntu: meson _build
root@ubuntu: cd _build
root@ubuntu: sudo ninja
root@ubuntu: sudo ninja install

常见问题

缺少依赖库:XXX found:NO(tried pkgconfig and cmake)

在这里插入图片描述


GTK4.0.1 安装

首先

root@ubuntu: sudo apt-get update

基础运行库安装

root@ubuntu: sudo apt-get install build-essential
root@ubuntu: sudo apt-get install libglib2.0-dev
root@ubuntu: sudo apt-get install cmake
root@ubuntu: sudo apt-get install libffi-dev
root@ubuntu: sudo apt-get install sassc
root@ubuntu: sudo apt-get install xsltproc
root@ubuntu: sudo apt-get install graphene-1.0
#root@ubuntu: sudo apt-get install pixman-dev
root@ubuntu: sudo apt-get install python3-pip
root@ubuntu: sudo apt-get install flex
root@ubuntu: sudo apt-get install bison
root@ubuntu: sudo apt-get install ninja-build
#root@ubuntu: sudo apt-get install ninja
root@ubuntu: sudo apt-get install git
root@ubuntu: sudo apt-get install libharfbuzz-dev
root@ubuntu: sudo apt-get install libfontconfig-dev
root@ubuntu: sudo apt-get install libxkbcommon-dev
root@ubuntu: sudo apt-get install libcairo-dev
root@ubuntu: sudo apt-get install libwayland-dev
root@ubuntu: sudo apt-get install libxrandr-dev
root@ubuntu: sudo apt-get install libxi-dev
root@ubuntu: sudo apt-get install libegl-dev
下面这几个库需要手动安装
  1. 安装meson ( 必须保证版本大于等于0.56.2)
#查看meson版本,如果满足条件可以跳过此步
root@ubuntu: meson -v

NOTE:通过apt安装的meson版本不一定大于0.56.2,使用上述命令检查meson版本👆

meson下载地址
下载meson-0.58.2.tar.gz

root@ubuntu: tar -xvf meson-0.58.2.tar.gz
root@ubuntu: cd meson-0.58.2
# Meson requires Python 3.6.0 or greater
root@ubuntu: pip3 install ./
root@ubuntu: meson -v #如果是0.58.2表示安装成功
  1. 安装gobject-introspection
    gobject-introspection下载地址
    下载gobject-introspection-1.66.1.tar.xz
root@ubuntu: tar -xvJf gobject-introspection-1.66.1.tar.xz
root@ubuntu: cd gobject-introspection-1.66.1
root@ubuntu: meson _build
root@ubuntu: cd _build
root@ubuntu: sudo ninja
root@ubuntu: sudo ninja install
  1. 安装pango
    pango下载地址
    下载pango-1.48.0.tar.xz
root@ubuntu: apt-get install libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev
root@ubuntu: tar -xvJf pango-1.48.0.tar.xz
root@ubuntu: cd pango-1.48.0
root@ubuntu: meson _build
root@ubuntu: cd _build
root@ubuntu: sudo ninja
root@ubuntu: sudo ninja install
  1. 安装gdk-pixbuf
    gdk-pixbuf下载地址
    下载gdk-pixbuf-2.42.2.tar.xz
root@ubuntu: apt-get install docbook-xsl
root@ubuntu: tar -xvJf gdk-pixbuf-2.42.2.tar.xz
root@ubuntu: cd gdk-pixbuf-2.42.2
root@ubuntu: meson _build
root@ubuntu: cd _build
root@ubuntu: sudo ninja
root@ubuntu: sudo ninja install
  1. 安装wayland-protocols(版本必须大于1.20)
    wayland-protocols下载地址
    下载wayland-protocols-1.21.tar.xz
root@ubuntu: tar -xvJf wayland-protocols-1.21.tar.xz
root@ubuntu: cd gwayland-protocols-1.21
root@ubuntu: ./configure
root@ubuntu: make
root@ubuntu: sudo make install
  1. 安装sassc和libsass (sudo apt-get install sassc 安装失败的情况下使用 )
    传送门

下载GTK4并安装

gtk4下载地址
下载 gtk-4.0.1.tar.xz

root@ubuntu: tar -xvJf gtk-4.0.1.tar.xz
root@ubuntu: cd gtk-4.0.1
root@ubuntu: meson _build
root@ubuntu: cd _build
root@ubuntu: sudo ninja
root@ubuntu: sudo ninja install

👆gtk4安装过程可能会要求安装glib,安装命令如下:

root@ubuntu: git clone https://gitlab.gnome.org/GNOME/glib.git
root@ubuntu: cd glib/
root@ubuntu: meson _build
root@ubuntu: cd _build
root@ubuntu: ninja
root@ubuntu: ninja install

NOTE:在ninja过程中可能会出现缺某些库的情况(这是难免的),常见的error见下面常见err1的描述,通用解决方法就是运行下面命令安装库(如果无法安装在评论中贴出error mesgs)

root@ubuntu:sudo apt-get install libXXX-dev

安装完缺少的库之后,可以继续在_build中运行ninja命令,如果显示undefined的错误,则重新配置项目再安装(命令行见下面的常见err2)

常见err1

PS:如果出现这个,说明需要安装 libharfbuzz-dev

|Subproject  harfbuzz is buildable: NO (disabling)
|Dependency harfbuzz from subproject subprojects/harfbuzz found: NO (subproject failed to configure)
|WARNING: The version of CMake /usr/bin/cmake is 2.8.12.2 but version >=3.4 is required
|Run-time dependency harfbuzz found: NO (tried pkgconfig and cmake)
|Looking for a fallback subproject for the dependency harfbuzz

subprojects/pango/meson.build:264:2: ERROR: Subproject "subprojects/harfbuzz" required but not found.

常见err2

如果ninja过程中出现undefined之类的错误可以重新配置项目再编译,例如(假设当前在gtk4的_build目录中):
重新配置项目并安装

root@ubuntu: cd .. #退出_build目录
root@ubuntu: meson setup --wipe _build
root@ubuntu: cd _build
root@ubuntu: ninja
root@ubuntu: ninja install

查看GTK4是否安装成功,显示下面的信息表示安装成功

pkg-config --cflags gtk4
-mfpmath=sse -msse -msse2 -pthread -I/usr/local/include/gtk-4.0 -I/usr/local/include/gio-unix-2.0 -I/usr/local/include/pango-1.0 -I/usr/local/include/fribidi -I/usr/local/include/gdk-pixbuf-2.0 -I/usr/local/include/graphene-1.0 -I/usr/local/lib/x86_64-linux-gnu/graphene-1.0/include -I/usr/local/include -I/usr/local/include/glib-2.0 -I/usr/local/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/cairo -I/usr/include/harfbuzz -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid

GTK4测试程序

File:hello-world-gtk.c

#include <gtk/gtk.h>

static void
print_hello (GtkWidget *widget,
             gpointer   data)
{
  g_print ("Hello World\n");
}

static void
activate (GtkApplication *app,
          gpointer        user_data)
{
  GtkWidget *window;
  GtkWidget *button;

  window = gtk_application_window_new (app);
  gtk_window_set_title (GTK_WINDOW (window), "Window");
  gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);

  button = gtk_button_new_with_label ("Hello World");
  g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
  gtk_window_set_child (GTK_WINDOW (window), button);

  gtk_window_present (GTK_WINDOW (window));
}

int
main (int    argc,
      char **argv)
{
  GtkApplication *app;
  int status;

  app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
  g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
  status = g_application_run (G_APPLICATION (app), argc, argv);
  g_object_unref (app);

  return status;
}

编译程序

gcc -o hello-world-gtk hello-world-gtk.c `pkg-config --cflags --libs gtk4`

Windows下安装并使用 GTK4


在这里插入图片描述

  • 16
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 45
    评论
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从善若水

原创不易,感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值