Ubuntu 12.04下在Eclipse IDE for C/C++ Developers中运行C语言的GTK程序

       哈哈哈……终于搞定了GTK程序的编译与运行,纠结了近一个月的问题终于得以解决,痛快!近一个月来,不断百度、发博文、百度知道提问、csdn提问……经常发私信、评论博文麻烦大牛,比如sunny2038、轻飘风扬、Sun1956……在此对所有帮助我的人表示感谢!
        特别感谢csdn的sunny2038,他的博文《Windows和Ubuntu11.10在Eclipse中配置C和GTK》和热心回复给了我很大的帮助!
        Neo E. Cai的博文《Ubuntu下GTK的安装、编译和测试》对我具有非常重要的意义,在此表示特别的感谢!
        

        记录一下Ubuntu 12.04下在Eclipse IDE for C/C++ Developers中运行C语言的GTK程序的过程及所遇问题的解决方法,希望对遇到类似问题的人有所帮助。 (另外可以参考百度文库中的图解Eclipse建立、配置、运行GTK 项目


安装、配置过程:
1、下载ubuntu-12.04-desktop-i386.iso,以VM虚拟机的方式安装。
2、下载jdk-7u4-linux-i586.gz并解压到/usr/lib/jvm。
3、下载eclipse-cpp-luna-R-linux-gtk.tar.gz并解压到/usr/lib。
4、参照《Ubuntu下GTK的安装、编译和测试》的过程安装GTK 2.24.10。
5、参照《Windows和Ubuntu11.10在Eclipse中配置C和GTK》配置Eclipse。


编译、运行GTK项目所遇关键问题解决方法:
1、找不到gtk/gtk.h的解决方法:选定GTK项目,右击选择Properties-->C/C++ Build-->Settings-->GCC C Compiler-->Includes,加入/usr/include/gtk-2.0 和 /usr/include/glib-2.0。
2、找不到glibconfig.h等头文件的解决方法(信息类似于:/usr/include/glib-2.0/glib/gtypes.h:34:24: fatal error: glibconfig.h: No such file or directory):在终端用locate glibconfig.h查找所在目录并在注意点1中逐个添加(应该可以设置环境变量,但作为Linux菜鸟的我
不熟悉),主要目录如下:

/usr/lib/i386-linux-gnu/glib-2.0/include
/usr/include/cairo
/usr/include/pango-1.0
/usr/lib/i386-linux-gnu/gtk-2.0/include
/usr/include/gdk-pixbuf-2.0
/usr/include/atk-1.0
3、解决undefined reference to `gtk_init'等
错误方法

(1)选定GTK项目,右击选择Properties-->C/C++ Build-->Settings-->GCC C Linker,在Command line Pattern中,将${FLAGS}移
到最后,即:${COMMAND} ${OUTPUT_FLAG} ${OUTPUT_PREFIX} ${OUTPUT} ${INPUTS} ${FLAGS}
或者将${INPUTS}移到${FLAGS}的前面,即:${COMMAND} ${INPUTS} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX} ${OUTPUT}
(2)选定GTK项目,右击选择Properties-->C/C++ Build-->Settings-->GCC C Compiler-->Miscellaneous的Other flags中添加`pkg-config --cflags gtk+-2.0`,成为-c -fmessage-length=0 `pkg-config --cflags gtk+-2.0`。(我的悲剧之一:删除了-c -fmessage-length=0)
(3)选定GTK项目,右击选择Properties-->C/C++ Build-->Settings-->GCC C Linker-->Miscellaneous的Linker flags中添加:`pkg-config --libs gtk+-2.0`


特别注意cflags,libs前是两个-,即--(我的悲剧之一:直接从《Windows和Ubuntu11.10在Eclipse中配置C和GTK》复制,只有一个-)。


猜你喜欢

转载自blog.csdn.net/acmerhlj/article/details/39720183