随笔 - 18  文章 - 0  评论 - 21  阅读 - 39779

第一个Gtk+窗口程序编译手记(Linux平台)

     本文的编译环境为Linux RedHat 9.0 + gcc,在编译以下窗口程序之前,必须确定你的系统已安装了以下三大组件:

1:开发工具

2:X软件开发

3:GNOME软件开发

     如果在安装Linux RedHat 9.0的时候未选择这三个软件包进行安装,则可以单击红帽图标-系统设置-添加/删除应用程序,打开软件包管理窗口,点选开发工具,X软件开发,GNOME软件开发这三项前的复选框进行安装。

1: 将以下代码保存为gtkwin.c文件,放在root管理员目录下。

复制代码
#include <gtk/gtk.h>

/*按钮单击回调函数*/
void Button_Click(GtkWidget * widget,gpointer * data)
{
    
/*在命令行上打印一行消息*/
    g_print(
"button clicked and data = %s\n",(char *)data);
}

void Destroy(GtkWidget * widget,gpointer * data)
{
    
/*退出消息循环*/
    gtk_main_quit();
}

/*程序入口函数*/
int main(int argc,char **argv)
{
    GtkWidget 
* window;
    GtkWidget 
* button;

    
/*初始化图形显示环境*/
    gtk_init(
&argc,&argv);

    
/*创建顶级窗口*/
    window 
= gtk_window_new(GTK_WINDOW_TOPLEVEL);
    
/*设置窗口关闭销毁时的回调函数*/
    g_signal_connect(GTK_OBJECT(window),
"destroy",GTK_SIGNAL_FUNC(Destroy),NULL);
    
/*设置窗口标题*/
    gtk_window_set_title(GTK_WINDOW(window),
"My First GTK+ Window");
    
/*设置窗口边框宽度*/
    gtk_container_border_width(GTK_CONTAINER(window),
20);

    
/*创建按钮*/
    button 
= gtk_button_new_with_label("Hello World");
    
/*设置按钮单击时的回调函数*/
    g_signal_connect(GTK_OBJECT(button),
"clicked",GTK_SIGNAL_FUNC(Button_Click),"Hello World!");

    
/*将按钮添加到窗口中*/
    gtk_container_add(GTK_CONTAINER(window),button);
    
/*显示按钮和窗口*/
    gtk_widget_show(button);
    gtk_widget_show(window);

    
/*进入消息循环*/
    gtk_main();

    
return 0;
}
复制代码

2:单击红帽图标-系统工具-终端,打开命令行窗口。输入以下命令。其中[root@localhost root]#为命令行提示符,不需要手工输入。该提示符表示的是[当前用户名@当前机器名 当前所在目录]。注意,如果源文件不在root目录,则应先进入到该目录下。

[root@localhost root]# gcc -o gtkwin gtkwin.c `pkg-config --libs --cflags gtk+-2.0`
[root@localhost root]# ./gtkwin

      -o gtkwin选项表示编译生成的程序文件名为gtkwin,如果不指定该选项,则gcc编译器默认为a.out。gtkwin.c指定要编译的源文件名,`pkg-config --libs --cflags gtk+-2.0`要注意的是前后的两个"`"字符为键盘上数字键1旁边的那个键的输入,而不是";"键旁边的那个单引号键的输入。

      ./gtkwin运行编译生成后的当前目录下的gtkwin程序。

      OK,到这里一个Gtk+窗口程序就可以编译成功了。

      另一种编译方法可以使用Makefile,输入以下代码保存为Makefile文件,同样放到root管理员目录下。

     

复制代码
CC=gcc
program
=gtkwin
#PATH 
+= /usr/include/gtk2.0
LDLIBS
=`pkg-config --libs gtk+-2.0`
CFLAGS
= -Wall -g `pkg-config --cflags gtk+-2.0`

$(program):$(program).o
$(CC) $(LDLIBS) $(program).o 
-o $(program)

$(program).o:$(program).c
$(CC) $(CFLAGS) 
-c $(program).c

clran:
-rm -f $(program)
-rm -*.o
复制代码

 

      再在终端里输入:

[root@localhost root]# make

[root@localhost root]# ./gtkwin

      同样可以成功编译,并且方便得多。

posted on   ZYM  阅读(867)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
< 2009年3月 >
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 1 2 3 4
5 6 7 8 9 10 11

点击右上角即可分享
微信分享提示