当前位置: 首页 > article >正文

C语言:在 Win 10 上,gcc 如何编译 gtk 应用程序


Windows 10 上使用 g++(或 gcc)编译基于 GTK 的 C 语言程序是完全可行的,且相比 Tcc 更为推荐,因为 g++(GNU 编译器套件)对 GTK 的支持更加完善,配置也更简单。以下是详细步骤和注意事项:


国内阿里镜像下载 msys2-x86_64-latest.exe

1. 环境准备

(1) 安装 MSYS2

MSYS2 是 Windows 上的类 Unix 开发环境,提供包管理器 pacman,可方便安装 GTK 和编译工具。

  • 下载并安装 MSYS2。
  • 更新软件包:
    pacman -Syu
    
(2) 安装 GTK3 开发库

在 MSYS2 终端中运行:

pacman -S mingw-w64-x86_64-gtk3

Total Download Size: 93.21 MiB
Total Installed Size: 677.30 MiB

(3) 安装 g++ 或 gcc

根据需要安装 MinGW-w64 工具链(包含 g++ 和 gcc):

pacman -S mingw-w64-x86_64-toolchain

:: There are 13 members in group mingw-w64-x86_64-toolchain:
:: Repository mingw64
–1) mingw-w64-x86_64-binutils 2) mingw-w64-x86_64-crt-git 3) mingw-w64-x86_64-gcc
–4) mingw-w64-x86_64-gdb 5) mingw-w64-x86_64-gdb-multiarch 6) mingw-w64-x86_64-headers-git
–7) mingw-w64-x86_64-libmangle-git 8) mingw-w64-x86_64-libwinpthread-git
–9) mingw-w64-x86_64-make 10) mingw-w64-x86_64-pkgconf 11) mingw-w64-x86_64-tools-git
–12) mingw-w64-x86_64-winpthreads-git 13) mingw-w64-x86_64-winstorecompat-git

Enter a selection (default=all): 3.mingw-w64-x86_64-gcc
Total Download Size: 63.01 MiB
Total Installed Size: 507.50 MiB


2. 编写示例代码

创建一个 C 语言文件 app.c,内容如下:

#include <gtk/gtk.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDOW(window), "GTK on Windows");g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);gtk_widget_show_all(window);gtk_main();return 0;
}

3. 编译命令

(1) 使用 pkg-config 简化编译

用 MSYS2 MINGW64 终端
which gcc
which pkg-config

GTK 依赖的头文件和库路径可通过 pkg-config 自动获取:

gcc -o app.exe app.c $(pkg-config --cflags --libs gtk+-3.0)
  • 说明
    • gcc:C 编译器(若代码为 C++,可替换为 g++)。
    • $(pkg-config ...):自动填充 GTK 的头文件路径和链接库。
    • -o app.exe:指定输出文件名。
(2) 手动指定路径(备用)

pkg-config 不可用,需手动指定路径(不推荐):

gcc -o app.exe -IC:/msys64/mingw64/include/gtk-3.0 -IC:/msys64/mingw64/include/glib-2.0 ... app.c -LC:/msys64/mingw64/lib -lgtk-3 -lgdk-3 ... 

4. 运行程序

  • 编译生成的 app.exe 需要依赖 GTK 的 DLL 文件(如 libgtk-3-0.dll)。
    $ ./app.exe
  • 解决方法
    1. 将 DLL 文件从 C:\msys64\mingw64\bin 复制到 app.exe 所在目录。
    2. 或将 C:\msys64\mingw64\bin 添加到系统环境变量 PATH 中。

5. 常见问题

  • 报错 pkg-config not found
    确保已安装 pkg-config

    pacman -S mingw-w64-x86_64-pkg-config
    
  • 头文件或库缺失
    检查 GTK 是否安装正确,路径是否与编译命令中的 -I-L 参数匹配。

  • C 与 C++ 的混用问题

    • 若代码是纯 C 语言,建议使用 gcc
    • 若代码包含 C++ 特性(如类、模板),需使用 g++,并将文件扩展名改为 .cpp

6. 替代方案

  • 使用集成开发环境(IDE)
    • VS Code + GTK 插件。
    • Code::Blocks 配置 GTK 项目。

总结

  • 完全可行:g++/gcc 在 Windows 10 上编译 GTK 应用是标准做法,推荐使用 MSYS2 管理依赖。
  • 优势
    • 自动依赖管理(通过 pkg-config)。
    • 支持完整的 C/C++ 标准和 GTK 特性。
  • 适用场景:从简单示例到大型 GTK 项目均可胜任。
http://www.lryc.cn/news/2378900.html

相关文章:

  • 阿里云CMH镜像迁移与SMC整机迁移对比及功能详解(同地域跨主体账号场景)
  • 用vue和go实现登录加密
  • 政府数据开放试点企业如何抢占特许经营协议黄金席位
  • CSS 锚点滑动效果的技术
  • mac-M系列芯片安装软件报错:***已损坏,无法打开。推出磁盘问题
  • Echart地图数据源获取
  • GNSS数据自动化下载系统的设计与实现
  • MySQL 中 JOIN 和子查询的区别与使用场景
  • 【深度学习-Day 12】从零认识神经网络:感知器原理、实现与局限性深度剖析
  • 谈谈未来iOS越狱或巨魔是否会消失
  • Unity3D仿星露谷物语开发43之农作物生长
  • 从0到1上手Kafka:开启分布式消息处理之旅
  • GTS-400 系列运动控制器板卡介绍(三十四)---运动程序多线程累加求和
  • Python爬虫如何应对网站的反爬加密策略?
  • 第一次经历项目上线
  • Conda配置完全指南——Windows系统Anaconda/Miniconda的安装、配置、基础使用、清理缓存空间和Pycharm/VSCode配置指南
  • Quasar组件 Carousel走马灯
  • AI日报 - 2024年5月17日
  • R语言数据框(datafram)数据的构建及简单分析
  • 风控域——风控决策引擎系统设计
  • CAPL Class: TcpSocket (此类用于实现 TCP 网络通信 )
  • 数据分析 —— 数据预处理
  • 软件架构风格系列(4):事件驱动架构
  • windows系统各版本下载
  • arduino平台读取鼠标光电传感器
  • 【Linux网络】网络层
  • 力扣-98.验证二叉搜索树
  • 5.17本日总结
  • 大模型学习:Deepseek+dify零成本部署本地运行实用教程(超级详细!建议收藏)
  • VSCode launch.json 配置参数详解