在 CentOS 上进行 Rust 图形界面开发的可行路径
一 环境准备
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shsource $HOME/.cargo/envsudo dnf install gtk3-devel glib2-develpkg-config --modversion gtk+-3.0(应输出版本号)二 方案一 GTK-rs 原生 Linux 桌面应用
cargo new gtk-rs-demo && cd gtk-rs-demo[dependencies]
gtk = { version = "0.16", features = ["v3_24"] }
use gtk::prelude::*;
use gtk::{Application, ApplicationWindow, Button, Label, Box as GtkBox, Orientation};
fn main() {
let app = Application::builder()
.application_id("com.example.gtk-rs-demo")
.build();
app.connect_activate(|app| {
let window = ApplicationWindow::builder()
.application(app)
.title("Rust GTK Demo")
.default_width(400)
.default_height(300)
.build();
let label = Label::new(Some("Hello, Rust GUI!"));
let button = Button::with_label("Click Me");
button.connect_clicked(|_| {
println!("Button clicked!");
});
let vbox = GtkBox::new(Orientation::Vertical, 10);
vbox.append(&label);
vbox.append(&button);
window.set_child(Some(&vbox));
window.show();
});
app.run();
}
cargo run(若报库缺失,请确认已安装 gtk3-devel/glib2-devel 并用 pkg-config 验证)。三 方案二 跨平台原生框架对比与选型
| 框架 | 依赖与特点 | 适用场景 |
|---|---|---|
| Iced | 纯 Rust、声明式、类型安全、跨平台 | 数据可视化、工具类桌面应用 |
| egui | 即时模式、纯 Rust、易集成、可编译到 Web/Wasm | 原型、工具、游戏内 UI |
| Slint | 声明式 UI 语言、高性能、对嵌入式友好 | 嵌入式 + 桌面混合场景 |
| Tauri | 前端用 HTML/CSS/JS,后端用 Rust,体积小 | 团队熟悉 Web 技术、企业内管工具 |
四 常见问题与排查
pkg-config --modversion gtk+-3.0 验证环境可用性。