GTK+开发环境搭建

article/2025/9/11 14:35:31

一般讲到GUI程序开发,大家都会想到C++等面向对象的高级语言,而认为C语言不能做界面。C语言也可以用来写界面,GTK+就是一个用来写界面的库,它本身就是用C语言写的,而且实现了面向对象的设计。对于一个C语言程序员来说,通常都不是专业做UI开发的,但是偶尔还是需要写个带界面的小程序,去学习其他编程语言太麻烦了,所以学习基于C语言的GTK+是一个不错的选择。

本文主要讲解怎么在windows系统下搭建GTK+开发环境,Linux下就不讲了,因为GTK+本来就是Linux下的东西,GNOME就是基于GTK的,各种依赖组件都有了,所以应该比windows下简单很多,一般都是apt-get一条命令搞定。

这里不考虑VS平台,只考虑在msys2的开发环境,在msys2需要下一个编译器,msys2下搭建gcc开发环境可以参考以下这篇文章

https://blog.csdn.net/qiuzhiqian1990/article/details/56671839

有3种方法可以搭建gtk开发环境,分别是用pacman命令安装,下载all-in-one bundle包安装和从源码安装。

#1.使用pacman安装
这也是目前官方推荐的方法,先使用以下命令查看GTK的版本

pacman -Ss gtk

然后会列出很多版本的名字,找一个版本安装,
mingw32/mingw-w64-i686-gtk3 3.22.30-1 [已安装]
GObject-based multi-platform GUI toolkit (v3) (mingw-w64)
我装的是3.22版本,如果编译器是64位需要把i686-换成x86_64,安装命令如下,不要把3.22.30-1输进去,这只是一个说明

pacman -S mingw32/mingw-w64-i686-gtk3

安装完了之后在F:\msys32\mingw32\bin下有很多gtk的例子程序,都是以gtk开头,比如下面这个gtk3-demo.exe软件就是GTK+写的,它展示了一些例子,有源代码,还可以点run运行
这里写图片描述

接下来就写一个最简单的程序运行一下吧

#include <gtk/gtk.h>int main(int argc, char *argv[])
{GtkWidget *window;gtk_init(&argc,&argv);window = gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title (GTK_WINDOW (window), "Hello World");gtk_widget_show(window);gtk_main();return 0;
}

当然编译肯定是找不到头文件,由于gtk的依赖非常多,要添加很多路径,刚开始傻傻的一个个添加,其实有一种很简单的方法,进入F:\msys32\mingw32目录,输入命令pkg-config,没有这个命令第3节会说明怎么解决

pkg-config --cflags gtk+-3.0

此时就会生成所有头文件路径,直接加到eclipse的编译选项里,就不用一个个添加了

-mms-bitfields -pthread -mms-bitfields -IF:/msys32/mingw32/include/gtk-3.0 -IF:/msys32/mingw32/include/cairo -IF:/msys32/mingw32/include -IF:/msys32/mingw32/include/pango-1.0 -IF:/msys32/mingw32/include/fribidi -IF:/msys32/mingw32/include/atk-1.0 -IF:/msys32/mingw32/include/cairo -IF:/msys32/mingw32/include/pixman-1 -IF:/msys32/mingw32/include -IF:/msys32/mingw32/include/freetype2 -IF:/msys32/mingw32/include -IF:/msys32/mingw32/include/harfbuzz -IF:/msys32/mingw32/include/libpng16 -IF:/msys32/mingw32/include/gdk-pixbuf-2.0 -IF:/msys32/mingw32/include/libpng16 -IF:/msys32/mingw32/include -IF:/msys32/mingw32/include/glib-2.0 -IF:/msys32/mingw32/lib/glib-2.0/include -IF:/msys32/mingw32/include

如下图所示,把上面这一大串复制到other flags里,就是告诉gcc在这些头文件路径路查找。

这里写图片描述

此时头文件有了,但是编译时又报出各种找不到符号,这是因为没有把依赖库加入到工程里,同理我们需要查看gtk需要哪些库,使用命令

pkg-config --libs gtk+-3.0

此时生成生成了需要的库

-LF:/msys32/mingw32/lib -lgtk-3 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lz -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -lfribidi -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl

很可惜不能直接复制,因为mingw32/lib文件夹下的库不能用,而mingw32/bin下的库可以用,但是库的名字又有点差别,所以需要手工修改

-LF:/msys32/mingw32/bin -LF:/msys32/mingw32/lib -lgtk-3-0 -lgdk-3-0 -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lz -lpangowin32-1.0-0 -lpangocairo-1.0-0 -lpango-1.0-0 -lfribidi-0 -latk-1.0-0 -lcairo-gobject-2 -lcairo-2 -lgdk_pixbuf-2.0-0 -lgio-2.0-0 -lgobject-2.0-0 -lglib-2.0-0 -lintl-8

然后把修改的内容加入到链接器选项里面:
这里写图片描述

这下终于可以编译成功了,但是运行时又提示缺少动态库,上面加的库是编译用的,运行时还需要很多很多库,所以要添加环境变量,在path这一项里加入F:\msys32\mingw32\bin;让电脑知道动态库都在哪里,但是发现加到结尾还是不行,查了一下,别人说要加到path的开头,试了一下果然可以,真是神奇,运行结果如下
这里写图片描述
最后我们发现还有个黑框框,如果想要去掉,在前面的设置里,需要在链接器选项里再添加-mwindows
这里写图片描述

#2.使用all-in-one bundle安装

all-in-one bundle就是把所有编译好的依赖放到一个压缩包里,下载地址为:

http://win32builder.gnome.org/

找到gtk±bundle_3.4.2-20130921_win32.zip的包下载,这里的32位或64位与电脑操作系统无关,只与编译器版本有关。下载完毕后解压的一个文件夹下,我的是放在F:\gtk。

和上面类似的使用cmd进入F:\gtk\bin文件夹,使用pkg-config命令查看头文件路径和所需的库,然后也和前面一样需要手工修改生成的链接库选项。

操作步骤和前面基本一样,用这种方式可以不在msys2平台下。

#3.从源码编译安装

这种方式在msys2下没有成功,但也记录下吧。

我下载的是gtk±3.20.0源码,解压后进入源码文件夹,然后运行./configure命令,提示说缺少pkg-config,然后使用 pacman 安装pkg-config,但是安装完毕后发现还是同样的错误,在shell里输入pkg-config发现没有该命令,所以可以确定pkg-config安装的地方没有设置环境变量。大部分软件都会安装在F:\msys32\usr\binn里,而pkg-config却安装在F:\msys32\mingw32\bin,所以需要在环境变量添加改路径,即在F:\msys32\etc\skel\.bashrc文件里加入这一句

export PATH=/f/msys32/mingw32/bin:$PATH

使用时再导入skel.bashrc即可
source /etc/skel/.bashrc

这时候shell就能识别所有在mingw32/bin文件夹里的命令了,然后又报缺少依赖包,
configure: error: Package requirements (glib-2.0 >= 2.45.8 atk >= 2.15.1 pango >= 1.37.3 cairo >= 1.14.0 cairo-gobject >= 1.14.0 gdk-pixbuf-2.0 >= 2.30.0) were not met:
No package ‘atk’ found
No package ‘pango’ found
No package ‘cairo’ found
No package ‘cairo-gobject’ found
No package ‘gdk-pixbuf-2.0’ found

再把上面的包都安装,最后还是出现了一个错误

configure: error: Package requirements ( cairo-xlib) were not met:
No package ‘cairo-xlib’ found

cairo-xlib这个包目前不知道在哪里,有人说要先安装libcairo2-dev,这个包在linux下有,在windows下也找不到,最后可能只有编译cairo源码了,我没试过。

要使用编译源码的方式安装,还是在linux下比较好,不管什么包都很好找,要安装libcairo2-dev只需一条命令就搞定了

sudo apt-get install libcairo2-dev


http://chatgpt.dhexx.cn/article/YlN4YYv1.shtml

相关文章

GTK官方教程

前言&#xff1a; 让你在开发中爱不释手的 GT 包。关注GSLS官网&#xff0c;查看更多源码 ヾ(✿&#xff9f;▽&#xff9f;)ノ工具包。 所有文章 小编尽量让读者可以 直接 读懂 与 完全 复制粘贴&#xff0c;其中复杂或较多 的源码 会有 源码 并 贴上 github 网址。 GT 类 里面…

GTK+入门教程

GTK入门教程&#xff08;一&#xff09; 1. 显示一个窗口 #include <gtk/gtk.h>int main(int argc, char *argv[]) {GtkWidget *window;gtk_init(&argc, &argv);window gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_widget_show(window);g_signal_connect(window,…

学习使用GTK+

学习使用GTK 0.概述 原文地址&#xff1a;http://blog.programet.org/2010/08/gtk-0.html GTK是当下流行的图形界面库之一&#xff0c;使用GTK可以方便地构造出应用程序界面。叶子觉得GTK很好用&#xff0c;在这里推荐给大家&#xff0c;并留下自己的一些使用心得。希望你也喜欢…

GTK+:GTK+的简介、安装、使用方法之详细攻略

GTK&#xff1a;GTK的简介、安装、使用方法之详细攻略 目录 GTK的简介 1、GTK特点 GTK的安装 1、基于Windows平台安装 第一步、下载GTK 第二步、安装GTK 第三步、加载系统环境变量 第四步、运行命令测试 第五步、利用python预测测试 GTK的使用方法 1、C语言实现 2、…

【Linux】特别篇--GTK界面设计

【Linux】特别篇--GTK界面设计 一、GTK界面常用函数1、控件大小设置2、创建窗口3、创建控件&#xff08;1&#xff09;标签label&#xff08;2&#xff09;按键button&#xff08;3&#xff09;行辑器 二、GTK常用布局方法1、布局的使用方法&#xff08;以水平布局为例&#xf…

GTK入门教程

GTK入门教程 1.GTK简介 GTK&#xff08;GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包。最初是为GIMP写的&#xff0c;已成为一个功能强大、设计灵活的一个通用图形库&#xff0c;是GNU/Linux下开发图形界面的应用程序的主流开发工具之一。当然&#xff0c;…

gtk学习总结:GTK从入门到放弃,三天包教包会

今天花了一些时间复习之前学习过的gtk&#xff0c;感觉东西光学不用忘得好快啊&#xff0c;在这做个之前学过的内容的备份&#xff0c;希望对大家有用&#xff0c;也希望大家不要从入门到放弃。文中有些代码例子可能来自《GTK从入门到精通》吧&#xff0c;我不记得了&#xff0…

gcc下载地址

网上看到有提供的http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/&#xff0c;可以打开&#xff0c;但是下载太慢了 这里记录一个下载很快的地址https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/&#xff0c;为清华大学的开源镜像网站 想要找其他的开源软件&#xff0c;…

如何安装GCC

现在的CentOs8上没有自带的gcc编译器因此需要下载&#xff08;注意&#xff1a;这里的下载是指在虚拟机中下载&#xff0c;不是指在电脑上下载&#xff09; 若运行gcc时出现appstream 下载元数据失败则表明没有安装gcc。 1 首先需要获得root权限**** 在终端模式下输入su&…

arm-Linux-gcc交叉编译器和gcc编译器的下载地址

1.arm-none-linux-gnueabi-gcc下载 http://www.veryarm.com/arm-none-linux-gnueabi-gcc arm-none-Linux-gnueabi-gcc是 Codesourcery 公司&#xff08;目前已经被Mentor收购&#xff09;基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM系统中所有环节的代码&#xff0c;包…

Windows中安装GCC教程

GCC的安装教程 GCC简介 GCC编译器通常在Linux系统下使用&#xff0c;一般来说大部分发行的系统会默认安装&#xff0c;GCC编译器使用gcc指令在终端进行shell操作。 对于新接触Linux的朋友来说&#xff0c;简单的在Windows中练习过渡一下应该就足够了。&#xff08;我就是因为…

windows下安装gcc编译器(c/c++/fortran)

首先下载MinGW - Minimalist GNU for Windows 下载结束后双击&#xff0c;点击下一步即可&#xff0c; 然后勾选要安装的组件&#xff1a; 点击应用&#xff1a; 开始安装&#xff08;这一步要经过漫长的下载过程&#xff0c;请耐心等待&#xff09;&#xff1a; 修改环境变量…

软件安装 gcc编译器

rpm命令及各参数使用。针对所有已安装的软件建立一个本地软件数据库&#xff0c;作为后续软件升级和卸载的依据本地软件数据库保存在目录/var/lib/rpm中 yum命令及各参数应用可以把本地计算机作为本地YUM源&#xff0c;也可以配置一个网络YUM源 YUM源&#xff1a;包含整理好的…

在线c++编译器(gcc)

这几年c标准委员会活跃起来&#xff0c;c11、14标准相续推出。对于想尝鲜又怕麻烦&#xff08;visual studio 更新慢&#xff0c;对标准的支持力度也不够。对于使用gcc的&#xff0c;替换系统的gcc版本或者安装个mingw也挺费事&#xff09;的人来说&#xff0c;可以优先考虑在线…

GCC编译器介绍

GCC是一套由GNU开发的编程语言编译器&#xff0c;在Linux系统下可以用它调用其他不同的工具进行预处理、编译、汇编、链接这样的工作&#xff0c;其执行效率比一般编译器高20%~30%。由于它是GNU项目之一&#xff0c;是开源的软件&#xff0c;我们可以直接从网上免费地下载安装它…

Window10-MinGW下载安装gcc,g++编译器

文章目录 完成流程步骤&#xff1a;出现的问题&#xff1a; 完成流程步骤&#xff1a; 1.MinGW下载 MinGW官网 mingw-get-setup.exe下载地址 2.MinGW安装 打开下载好的mingw-get-setup.exe &#xff0c;这里选择安装目录为F:\MinGW。 3.下载安装gcc/g ​ 通过MinGW Insta…

gcc官网以及各个版本下载地址

gcc的官网&#xff1a; http://gcc.gnu.org/ gcc镜像站点&#xff1a; https://gcc.gnu.org/mirrors.html 例如点 Japan的链接 到japan站点下载

GCC编译器 MinGW的下载安装使用教程

哎 总所周知 gcc可以用来编译C 和C。在linux广泛应用&#xff0c;那么window怎么使用gcc呢。 就要用到gcc的window工具----MInGW&#xff0c;安装好之后&#xff0c;直接可以在windows的dos界面编译。 下面讲解安装使用过程。 1.官网下载 MinGW - Minimalist GNU for Windows d…

APK反编译工具及方法

文章目录 一、下载工具apktooldex2jarjd-gui 二、APK反编译方法方法一&#xff1a;Apktool方法二&#xff1a;dex2jar jd-gui 三、APK文件的基本结构 一、下载工具 apktool apktool&#xff1a;资源文件获取&#xff0c;可以提取出图片文件和布局文件进行使用查看。 点击下载…

IDEA反编译Jar包

一.安装Java Bytecode Decomplier插件 (1) File–>Settings–>Plugins &#xff0c;搜索 Java Bytecode Decomplier 插件 (2) 查看安装插件的路径 File->Import Setting 注意&#xff1a;如果你的插件里面搜不到 Java Bytecode Decomplier&#xff0c;但是能搜到…