Ubuntu20.04LTS(amd64) 下安裝 GTK4
首先
root@ubuntu: 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 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
下面這幾個庫需要手動安裝
- 安裝meson ( 必須保證版本大于等于0.56.2)
NOTE:通過apt安裝的meson版本不一定大于0.56.2,使用下述命令檢查meson版本
root@ubuntu: meson -v
meson下載地址
下載meson-0.56.2.tar.gz
root@ubuntu: tar -xvJf meson-0.56.2.tar.gz
root@ubuntu: cd meson-0.56.2
root@ubuntu: cd meson-0.56.2
root@ubuntu: pip3 install ./
root@ubuntu: meson -v #如果是0.56.2表示安裝成功
- 安裝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: ninja
root@ubuntu: ninja install
- 安裝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: ninja
root@ubuntu: ninja install
- 安裝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: ninja
root@ubuntu: ninja install
- 安裝wayland-protocols(版本必須大于1.20)
wayland-protocols下載地址
下載wayland-protocols-1.20.tar.xz
root@ubuntu: tar -xvJf wayland-protocols-1.20.tar.xz
root@ubuntu: cd gwayland-protocols-1.20
root@ubuntu: ./configure
root@ubuntu: make
root@ubuntu: make install
下載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: ninja
root@ubuntu: ninja install
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.
如果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`
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/250135.html
標籤:其他
上一篇:JAVA之路(簡介)
下一篇:C語言math常用方法
