感谢支持
我们一直在努力

Ubuntu Eclipse 配置 Gtk+2.0 库

目录[-]

前言

Gtk安装

一、安装

二、查看GTK库版本

三、测试程序

四、编译运行

在Eclipse中配置gtk+

一 4查看gtk+2.0的头文件目标和库文件名称

二 在eclipse中添加头文件目录和库文件名称

三 设置编译和连接选项

编译运行

后记:

————————————–分割线 ————————————–

Ubuntu 14.04 LTS安装Java 8和Eclipse 4.4  http://www.linuxidc.com/Linux/2014-11/109217.htm

Hadoop Eclipse 插件编译安装1.2.0 http://www.linuxidc.com/Linux/2013-07/87428.htm

Hadoop在Eclipse中的插件编译 http://www.linuxidc.com/Linux/2013-04/83295.htm

Hadoop 1.2.1编译Eclipse插件 http://www.linuxidc.com/Linux/2013-10/91666.htm

Ubuntu 13.10安装JDK、Eclipse for C/C++(解决全局菜单问题) http://www.linuxidc.com/Linux/2013-11/92305.htm

如何在Ubuntu 14.04中安装最新版Eclipse  http://www.linuxidc.com/Linux/2014-08/105090.htm

————————————–分割线 ————————————–

前言

IDE是我们不得不脭的东西,vi/vim/emacs + make + gcc/g++的方式固然很牛X,也很高效,但是它们无一不是配置复杂,需要极长年月才可以用的很好,达到替代所有IDE的程度。

所以我的选择是:

使用eclipse写代码,gvim写Makefile,在shell命令行中编译,运行。

gtk安装:

可参考如下网址:http://www.linuxidc.com/Linux/2012-05/59468.htm

为了以防万一,我把这篇文章抄了下来

一、安装

1、安装gcc/g++/gdb/make 等基本编程工具

sudo apt-get install build-essential

2、安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件

sudo apt-get install gnome-core-devel

3、用于在编译GTK程序时自动找出头文件及库文件位置 

sudo apt-get install pkg-config

4、安装 devhelp GTK文档查看程序

sudo apt-get install devhelp

5、安装 gtk/glib 的API参考手册及其它帮助文档

sudo apt-get install libglib2.0-doc libgtk2.0-doc

6、安装基于GTK的界面GTK是开发Gnome窗口的c/c++语言图形库

sudo apt-get install glade libglade2-dev

或者:

#或者

sudo apt-get install glade-gnome glade-common glade-doc

7、安装gtk2.0 或者 将gtk+2.0所需的所有文件统通下载安装完毕

sudo apt-get install libgtk2.0-dev

或者

sudo apt-get install libgtk2.0*

更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-11/109797p2.htm

二、查看GTK库版本

1、查看1.2.x版本

pkg-config –modversion gtk+

2、查看 2.x 版本

pkg-config –modversion gtk+-2.0

3、查看pkg-config的版本

pkg-config –version

4、查看是否安装了gtk

pkg-config –list-all grep gtk

三、测试程序 

//Helloworld.c
 
#include <gtk/gtk.h>
 
int main(int argc,char *argv[])
{
    GtkWidget    *window;
    GtkWidget    *label;
   
    gtk_init(&argc,&argv);
   
    /* create the main, top level, window */
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   
    /* give it the title */
    gtk_window_set_title(GTK_WINDOW(window),”Hello World”);
   
    /* connect the destroy signal of the window to gtk_main_quit
    * when the window is about to be destroyed we get a notification and
    * stop the main GTK+ loop
    */
    g_signal_connect(window,”destroy”,G_CALLBACK(gtk_main_quit),NULL);
   
    /* create the “Hello, World” label */
    label = gtk_label_new(“Hello, World”);
   
    /* and insert it into the main window */
    gtk_container_add(GTK_CONTAINER(window),label);
   
    /* make sure that everything, window and label, are visible */
    gtk_widget_show_all(window);
   
    /* start the main loop, and let it rest until the application is closed */
    gtk_main();
   
    return 0;
}

四、编译运行

1、编译

gcc -o Helloworld Helloworld.c `pkg-config –cflags –libs gtk+-2.0`

2、运行

./Helloworld

在eclipse中配置gtk+

网上的教程一般到这里也就完事了,但是这是远远不行的,正像我开头说的,我们不可能一直用记事本开发,所以还是要在eclipse之类的IDE中做开发的。关于IDE的选择我就不多说了,只是个人习惯而已。

在eclipse中配置gtk之前,我当然也去查找了很多资料,最后发现一个比较靠普的:http://www.linuxidc.com/Linux/2014-11/109798.htm

但是这个是在windows下配置的,虽然差别不大,我在Ubuntu中也按照文中所给的方法测试成功了,但是有个问题,我不仅仅需要一个gtk+库,我还需要libxml2库,可能以后还需要libzip之类的第三方库。所以不能一直在IDE中运行。比较客观的一个原因是:eclipse的console输入很蛋疼,用shell + make 的方式也要比单纯依赖IDE要灵活的多,最后一个原因就是我的eclipse总是时不时的崩溃。。。。

还是为了以隮万一,我做了部分摘抄:

一 4查看gtk+2.0的头文件目标和库文件名称

linuxidc@linuxidc:~/study/gtk/pkg$ pkg-config –cflags gtk+-2.0 # 查看gtk+头文件目标

-pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/harfbuzz

linuxidc@linuxidc:~/study/gtk/pkg$ pkg-config –libs gtk+-2.0 # 查看gtk+库文件名称

-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lglib-2.0 -lfreetype 

linuxidc@linuxidc:~/study/gtk/pkg$

由于我们要经常使用,所以可以用重定向把这些东西输出到一个文件:

下面是我把格式改了一下之后的后果[其实就是对齐了而已]

linuxidc@linuxidc:~/study/gtk/pkg$ cat includes
    1  -pthread
    2  -I/usr/include/gtk-2.0
    3  -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include
    4  -I/usr/include/atk-1.0
    5  -I/usr/include/cairo
    6  -I/usr/include/gdk-pixbuf-2.0
    7  -I/usr/include/pango-1.0
    8  -I/usr/include/gio-unix-2.0/
    9  -I/usr/include/freetype2
    10  -I/usr/include/glib-2.0
    11  -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
    12  -I/usr/include/pixman-1
    13  -I/usr/include/libpng12
    14  -I/usr/include/harfbuzz
linuxidc@linuxidc:~/study/gtk/pkg$ cat libs
    1  -lgtk-x11-2.0
    2  -lgdk-x11-2.0
    3  -latk-1.0
    4  -lgio-2.0
    5  -lpangoft2-1.0
    6  -lpangocairo-1.0
    7  -lgdk_pixbuf-2.0
    8  -lcairo
    9  -lpango-1.0
    10  -lfontconfig
    11  -lgobject-2.0
    12  -lglib-2.0
    13  -lfreetype 
linuxidc@linuxidc:~/study/gtk/pkg$

二 在eclipse中添加头文件目录和库文件名称

在eclipse中新建一个C工程,右键->propieties->C++ General->Paths and Symbols

选择右侧的GNU C,然后选择 Includes,添加pkg-config –cflags gtk+-2.0的输出。很遗憾,没有一次性添加的方法,而且添加的时候不能带上前面的-I,第一行的-pthread也不用添加

记得要选 Add to all configurations,一个个添加完之后,选择Libraries,添加pkg-config –libs gtk+-2.0的输出,当然也不要前面的-l,也要选择 Add to all configuratins

三 设置编译和连接选项

选择C++ Build->setting,在右侧的Configuration中选择Debug

点选右侧的 GCC C Compiler,在右侧的 command中添加 `pkg-config –cflags –libs gtk+-2.0`,注意不是单绰号,而反引号

然后在Configuration中选择Realease,同样选择GNU C Compiler,在右侧的command中添加 `pkg-config –cfalgs –libs gtk+2.0`

点OK

 编译运行

然后就是编译运行了,在eclipse中编译运行就不多说了,主要想说的是怎么写Makefile

在我所参考的网页中,提供了一个通用makefile

GTK_FLAGS = $(shell pkg-config –cflags –libs gtk+-2.0)
all:
 gcc -Wall -std=c99 -o app *.c ${GTK_FLAGS}
 
但是这不是我想要的效果,真正的Makefile也不可能这么写,于是我在gtk的中文FAQ中找到了这样一个Makefile

# basic GTK+ app makefile
SOURCES = myprg.c foo.c bar.c
OBJS    = ${SOURCES:.c=.o}
CFLAGS  = `gtk-config –cflags`
LDADD  = `gtk-config –libs`
CC      = gcc
PACKAGE = myprg
 
all : ${OBJS}
        ${CC} -o ${PACKAGE} ${OBJS} ${LDADD}
 
.c.o:
        ${CC} ${CFLAGS} -c $<
 
# end of file
 
这当然是可靠且可行的,我的Makefile也是基本上参考这一个Makefile写的 

# 功能:测试gtk+ Makefile
#
# 作者:小代码
#
# 时间:2014年 11月 23日 星期日 21:23:20 CST
 
 
PROGRAM=test
 
 
# 指定编译器
CC=gcc
# 指定编译选项
CFLAGS=-c -Wall `pkg-config –cflags gtk+-2.0`
# 指定连接时的库
LDADD=`pkg-config –libs gtk+-2.0`
 
# 指定删除命令及选项
RM=rm -rf
 
# 默认目标,创建可执行程序
all:${PROGRAM}
 
 
${PROGRAM}:helloGTK.o
    ${CC} -o ${PROGRAM} $^ ${LDADD}
 
helloGTK.o:helloGTK.c
 
 
 
.PHNOY:clean run
 
# 清除工作
clean:
    -${RM} ${PROGRAM} *.o
 
# 运行程序
run:
    ./${PROGRAM}
 
我的Makefile使用效果:

后记

那么我们是不是每次都要这么麻烦才可以写gtk程序呢?其实不然,只需要复制粘贴项目就可以,当然你换了工作空间也可手导入项目

再就是为什么我不演示在eclipse中的运行效果?因为我们不可能一直依赖IDE,eclipse对我的作用就是一个好用的代码编辑器和项目管理工具,对我来说,它并不是正值好的项目构建工具,所以我还是喜欢使用eclipse写代码,make编译运行程序的方式。也建议大家使用这种方式

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-11/109797.htm

赞(0) 打赏
转载请注明出处:服务器评测 » Ubuntu Eclipse 配置 Gtk+2.0 库
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏