如何在开放麒麟(openKylin)下安装GTK(v0.1.0)

版本:v0.1.0

明德融创工作室(Minter Fusion Studio, MFS) 出品

本文的所有步骤均经过测试复现

如果读者在实践中遇到问题,欢迎在评论区留言讨论,也欢迎批评指正


一、前言

openKylin默认安装下,没有安装GTK,因此无法在openKylin下使用GTK进行图形界面的开发。本文介绍如何安装GTK4,并提供了一个测试程序。

二、术语

【 openKylin****】****

开放麒麟(openKylin)操作系统,是一种基于Debin开发的Linux操作系统。由麒麟软件联合国家工业信息安全发展研究中心等单位发起并开源,2024年捐赠给开放原子基金会,由openKylin社区维护。openKylin是中国国产"银河麒麟"操作系统及其未来系列商业版本的开源根社区和技术底座。

【GTK】

GTK 是一套用于创建图形用户界面(GUI)的开源跨平台工具包,名字源自最初为 GIMP 图像处理软件开发的"GIMP ToolKit"。

它采用 C 语言编写,但基于面向对象设计,并提供了 Python、JavaScript、Rust 等多种语言的绑定-5。你在 Linux 桌面上常用的许多软件(如 GNOME 桌面环境、GIMP)的界面,底层都依赖 GTK 来绘制按钮、窗口和文本框等"小部件"(widget)。

在授权方面,GTK 采用 GNU 宽通用公共许可证(LGPL),通常版本为 2.1 或更高。这种许可证对开发者非常友好:它允许你自由地将 GTK 用于开源项目,也可以用于闭源的商业软件,而无需支付任何许可费或版税。唯一的义务是,如果你修改了 GTK 库本身的代码,那么对库的修改必须按照 LGPL 条款公开。

【终端】

是Linux操作系统下的一个命令行操作的窗口。

三、完成本文内容的软硬件环境

(一)硬件环境

  1. 中央处理器(CPU):11th Gen Intel(R) Core(TM) i5-1155G7 @ 2.50GHz (2.50 GHz)
  2. 内存:24.0G
  3. 显存:128M

(二)软件环境

  1. Windows 11 家庭中文版(26200.8246)64位操作系统
  2. Oracle VirtualBox,版本 7.2.6 r172322 (Qt6.8.0 on windows)
  3. Oracle VirtualBox虚拟机配置,8G
  4. VirtualBox下的openKylin 2.0 SP2虚拟机

四、操作步骤

步骤1 启动openKylin操作系统

在本文档中,是指打开VirtualBox的openKylin虚拟机。关于如何安装并运行openKylin虚拟机,可以参考明德融创工作室在本博客中的文章《如何在VirtualBox中安装开放麒麟(openKylin)2.0桌面系统虚拟机》。

步骤2 打开openKylin的终端窗口

以下操作都是在openKylin的终端下完成。在openKylin桌面上,可以通过Ctrl+Alt+T组合键打开终端窗口,也可以在开始菜单中,点击如图1所示的"终端"图标,打开终端窗口。

图1 openKylin终端图标

步骤3 在终端窗口中安装GTK

在终端窗口中,依次按照表1所列步骤逐步操作。

表1 终端中的操作步骤

|----|--------------------------|---------------------------------|------------------------|
| 序号 | 步骤 | 命令 | 备注 |
| 1. | 打开"维护模式" | sudo mm-cli -o | | | 2. | 重新启动openKylin系统进入"维护模式" | sudo reboot | |
| 3. | 在重新启动后系统桌面上打开"终端"窗口 | Ctrl+Alt+T | 同时按Ctrl、Alt和T键,打开终端窗口。 |
| 4. | 在线安装man | sudo apt install libgtk-4-dev | 安装gtk-4开发版 | | 5. | 测试安装 | man man | 如果正常运行,说明安装成功 |
| 6. | 系统切换回普通模式 | sudo mm-cli -c -a | | | 7. | 重新启动openKylin操作系统,恢复普通模式 | sudo reboot | |

五、检验安装结果

编写一个测试程序,gtk4_window.c:

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| #include <gtk/gtk.h> static void on_activate(GtkApplication *app, gpointer user_data) { GtkWidget *window; GtkWidget *label; /* 创建窗口,并绑定到应用 */ window = gtk_application_window_new(app); gtk_window_set_title(GTK_WINDOW(window), "Hello openKylin"); gtk_window_set_default_size(GTK_WINDOW(window), 400, 200); /* 创建一个标签,居中显示 */ label = gtk_label_new("你好,openKylin!\n这是一个 GTK4 窗口。"); gtk_window_set_child(GTK_WINDOW(window), label); /* 显示窗口 */ gtk_window_present(GTK_WINDOW(window)); } int main(int argc, char *argv\[\]) { GtkApplication *app; int status; /* 创建应用实例,使用唯一的应用 ID */ app = gtk_application_new("org.example.Gtk4Demo", G_APPLICATION_DEFAULT_FLAGS); /* 连接 activate 信号 */ g_signal_connect(app, "activate", G_CALLBACK(on_activate), NULL); /* 运行应用主循环 */ status = g_application_run(G_APPLICATION(app), argc, argv); g_object_unref(app); return status; } |

编译gtk4_window.c:

$ gcc gtk4_window.c -o gtk4_window `pkg-config --cflags --libs gtk4`

之后运行该程序gtk4_window:

$ ./gtk4_window

如果正常显示窗口,则证明GTK4安装成功。

六、操作中遇到的问题以及解决方案

1. 操作系统运行模式提示

如果出现以下提示:

|--------------------------------------------------------------------------------------------------------------------------------------------|
| ** 当前模式禁止执行(unpack)操作** dpkg: 错误: 执行钩子 /usr/bin/ostree-pkgs-guard 出错,退出状态为 256 E: Sub-process /usr/bin/dpkg returned an error code (2) |

说明当前不在维护模式,检查是否忘记进入维护模式了。按本文档第四部分步骤3解决。

2. 运行程序错误

运行上面编译好的gtk4_window,出现提示:

|-----------------------------------------------------------------------------------------------------------------------------|
| MESA: error: ZINK: vkCreateInstance failed (VK_ERROR_INCOMPATIBLE_DRIVER) libEGL warning: egl: failed to create dri2 screen |

这个错误提示通常意味着你的系统在尝试通过 ZINK(一个将 OpenGL 指令转译为 Vulkan 的中间层)调用显卡时失败了。这很可能是因为你的显卡驱动(尤其是 Vulkan 驱动)没有正确安装或配置。

如果使用的是VirtualBox虚拟机,则可以忽略上面的提示,因为显示需要调用显卡的GPU直接支持,而VirtualBox不是使用CPU进行渲染的,不调用GPU。

解决方案:

第一步:安装显卡驱动

如果你使用的是 AMD 或 Intel 显卡,则需要的是 Mesa 驱动

$ sudo apt update

$ sudo apt install mesa-utils mesa-vulkan-drivers

如果你使用的是 NVIDIA 显卡,可以选择安装 openKylin 仓库中提供的驱动,或者使用 NVIDIA 官方的驱动。

# 安装 openKylin 仓库中的驱动(以 515 版本为例,具体版本可能不同)

$ sudo apt install nvidia-driver-515

然后需要重新启动机器

$ sudo reboot

第二步:安装OpenGL开发库

$ sudo apt update

$ sudo apt install build-essential libgl1-mesa-dev libglu1-mesa-dev mesa-common-dev

这几个包的作用分别是:

  1. build-essential: 包含gcc、make等基础编译工具。

  2. libgl1-mesa-dev: 提供OpenGL的核心开发文件。

  3. libglu1-mesa-dev: 提供OpenGL工具库(GLU)的开发文件。

  4. mesa-common-dev: 包含通用的Mesa开发头文件。

# 重启电脑

$ sudo reboot

第三步:验证安装

# 查看 OpenGL 渲染器信息

$ glxinfo | grep "OpenGL renderer"

# 运行一个简单的 OpenGL 测试程序

$ sudo apt install mesa-utils

$ glxgears

如果glxinfo能正确显示你的显卡型号,并且glxgears能弹出一个旋转的齿轮窗口,就说明OpenGL环境已经配置成功了。


【版本信息】

当前版本:0.1.0

完成时间:2026-10-14

发布时间:2026-10-14

最后更新时间:2026-10-14


【创作团队】

策 划:沈传越

文字创作:沈传越

程 序:沈传越

技术支持:沈传越

图片采集:沈传越

排 版:沈传越

相关推荐
Lzg_na1 小时前
FAT文件系统详解
linux
看着博客敲代码1 小时前
enum4linux 报 Server doesn‘t allow session 与 SMB 主机信息枚举
linux·安全·网络安全
重生之小比特1 小时前
【Linux系统】09 环境变量
linux·运维·服务器
Teecertlabs1 小时前
【机密计算顶会解读】15:LDR——面向嵌入式TEE系统的高效安全Linux驱动
linux·操作系统·机密计算·可信执行环境
程序员-Benothing1 小时前
Linux网络性能分析:ss、netstat、iftop、sar实战
linux·运维·服务器
其实防守也摸鱼1 小时前
Codex 下载与本地部署实战指南
linux·服务器·前端·数据库·算法·ai
岳麓丹枫0011 小时前
故障案例分析:系统负载居高不下,多次出现 OOM
linux·postgresql
2401_862880821 小时前
Linux中断、中断子系统、内核同步互斥机制
linux·驱动开发·嵌入式硬件
姓刘的哦2 小时前
GT911触摸芯片
linux·stm32