2015-08-13 11:47:48
来 源
中存储网
Ubuntu
为了在Eclipse下编译使用GTK的C程序,折腾了好久。查了许多资料,发现网上的绝大部分方法都不行。不知道我是太走运了还是怎么回事。折腾了几个小时后,终于分别在Windows下和Ubuntu下都搭建成功了gtk环境。这里就把本次操作中经历写下来。也方便其他人参考。

为了在Eclipse下编译使用GTK的C程序,折腾了好久。查了许多资料,发现网上的绝大部分方法都不行。不知道我是太“走运”了还是怎么回事。折腾了几个小时后,终于分别在Windows下和Ubuntu下都搭建成功了gtk环境。这里就把我的经历写下来。也方便其他人参考。

Ubuntu下在Eclipse中运行C语言的GTK程序

1、下载相关的包

sudo apt-get install gnome-core-devel build-essential libgtk2.0-dev libgtk2.0-doc

2、测试代码

打开Eclipse,新建——C Project——输入Project name,并选择Executable中的Hello World ANSI C Project,默认会选择Linux GCC的Toolchains,点击Finish——这时会打开一个Hello World的示例代码——将其中哦功能的代码换成接下来的测试代码。(其实完全可以不用Hello World模版,这里只是简化过程。)

#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); 
gtk_main (); 
return 0;  
}

3、配置Eclipse

(1)选中gtk项目,在菜单栏点击Project——Properties——C/C++ Build——Settings——GCC C Compiler——Miscellaneous,在Other flags中加入`pkg-config –cflags gtk+-2.0`

(2)在同一个对话框中,选择GCC C Linker——Miscellaneous,在Linker flags中加入`pkg-config –libs gtk+-2.0`

(3)选中GCC C Linker,在右边的Command line pattern里面的${INPUTS} 调到${COMMAND}后面,如: ${COMMAND}  ${INPUTS} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT}

(4)在GCC C Compiler——Includes中,加入/usr/include/gtk-2.0 和 /usr/include/glib-2.0,可以消除gtk.h unresolved的警告,同时在程序中使用gtk的函数,会出现智能提示。

经过以上步骤,一个GTK程序就能运行出来了。

Windows下在Eclipse中运行C语言的GTK程序

1、安装并配置gtk

(1)下载windows下用的gtk包,地址为http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.8-20111122_win32.zip,点击直接下载,不放心的话可以将地址拷到浏览器地址栏下载。

(2)将下载后的gtk+-bundle_2.24.8-20111122_win32.zip解压,并将解压这个文件包之后的文件夹更名为gtk,比如放到C盘中:C:gtk。

(3)添加环境变量:我的电脑/计算机——右击,属性——在弹出的界面中选右边的高级选项——选择环境变量——在对话框的接下来选择PATH项——双击,添加C:gtkbin,注意以分号分割不同的变量。

(4)点开始,输入cmd,打开命令行,输入pkg-config --cflags gtk+-2.0+,回车,会出现一堆目录名,如下:

-mms-bitfields -Ic:/gtk/include/gtk-2.0 -Ic:/gtk/lib/gtk-2.0/include -Ic:/gtk/include/atk-1.0 -Ic:/gtk/include/cairo -Ic:/gtk/include/gdk-pixbuf-2.0 -Ic:/gtk/include/pango-1.0 -Ic:/gtk/include/glib-2.0 -Ic:/gtk/lib/glib-2.0/include -Ic:/gtk/include -Ic:/gtk/include/freetype2 -Ic:/gtk/include/libpng14

(5)继续在cmd窗口中输入pkg-config --libs gtk+-2.0,回车,出现另一堆目录:

-Lc:/gtk/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl

2、C语言的gtk模版程序

打开Eclipse,新建C项目的Hello World,并换成gtk的模版,如上一节的第二小节一样。

3、在Eclipse中,选中gtk的项目

(1)选中gtk项目,在菜单栏点击Project——Properties——C/C++ Build——Settings——GCC C Compiler——Miscellaneous,在Other flags中加入在命令行中输入`pkg-config –cflags gtk+-2.0`得到的内容。可以用鼠标在cmd窗口复制得到;

(2)在同一个对话框中,选择MinGW C Linker——Miscellaneous,在Linker flags中加入在命令行中输入`pkg-config –libs gtk+-2.0`得到的内容;

(3)选中MinGW C Linker,在右边的Command line pattern里面的${INPUTS} 调到${COMMAND}后面,如:

${COMMAND}  ${INPUTS} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT}

(4)在GCC C Compiler——Includes中,加入C:gtkincludegtk-2.0等(具体取决于你将gtk解压到哪,以及解压这个文件包之后的文件名),可以消除gtk.h unresolved的警告,同时在程序中使用gtk的函数,会出现智能提示。

经过以上步骤,一个GTK程序就能运行出来了。至于为什么不能像在Ubuntu中直接使用`pkg-config –libs gtk+-2.0`等作为Miscellaneous的参数,我也没找到合理的解释,一旦谁能解答,请告诉大家,谢谢。

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。