ÓÃGTK¿ª·¢LinuxǶÈëʽGUIÓ¦ÓóÌÐò
Ëæ×ÅÊý×ÖÐÅÏ¢¼¼ÊõºÍÍøÂç¼¼ÊõµÄ·¢Õ¹£¬ÈËÃÇÒѾ½øÈëÊýÂëʱ´ú¡£½¨Á¢ÔÚËüÃÇ»ù´¡Ö®ÉϵÄǶÈëʽϵͳÒѾ¹ã·ºµØÉøÍ¸µ½¿ÆÑ§Ñо¿¡¢¹¤³ÌÉè¼Æ¡¢¾üʼ¼ÊõÒÔ¼°ÈËÃǵÄÈÕ³£Éú»îµÈ·½·½ÃæÃæ¡£ÓÉÓÚǶÈëʽϵͳԽÀ´Ô½¸´ÔÓ¡¢¹¦ÄÜÒ²Ô½À´Ô½¶à£¬¿ª·¢Ç¶ÈëʽµÄGUIÓ¦ÓóÌÐòÒѾ³ÉΪһÖÖ±ØÈ»µÄÇ÷ÊÆ¡£±
ÔÚºÜÔçÒÔǰ£¬ÓÐÀàËÆÇ¶ÈëʽGUIµÄÓ¦ÓóÌÐò³öÏÖ£¬²»¹ýËüÃǶ¼Ê®·Ö¼òµ¥£¬Ö»¿É³ÆÖ®ÎªÇ¶ÈëʽGUI
ÒýÓÃÒ»¸ö¸ÅÄËùνGUI(Graphics User Interface)¼´Í¼ÐÎÓû§½çÃæ¡£Æä¹ã·ºÁ÷ÐÐÊǵ±½ñ¼ÆËã»ú¼¼ÊõµÄÖØ´ó³É¾ÍÖ®Ò»£¬Ëü¼«´óµØ·½±ãÓû§µÄʹÓã¬ÈËÃÇ¿ÉÒÔ²»ÔÙÏñÔÚDOSʱ´úÄÇÑùÒª¼ÇÒ»´ó¶Ñ¿ÝÔïµÄÖ¸ÁîÀ´²Ù×÷¼ÆËã»ú£¬¶øÖ»ÒªÍ¨¹ýÊó±êÇáµã¼¸Ï£¬¾Í¿ÉÒÔÍê³É´ó²¿·Ö¹¤×÷¡£Èç½ñ´ó²¿·ÖGUI¶¼ÊÇÖ¸ÔÚPC»úÉϹ¤×÷µÄ£¬¿ÉËüÃDz¢ÊʺÏÓÃÓÚǶÈëʽϵͳ¡£ÓÉÓÚǶÈë×ÊÔ´ÓÐÑϸñµÄÏÞÖÆ£¬Ëü¶ÔGUIÒ²ÓÐÌØÊâµÄÒªÇó¡£
Ò»¡¢ÓÃGTK¿ª·¢Ç¶ÈëʽGUIÓ¦ÓóÌÐò
GTKÊÇGIMP ToolkitµÄËõд£¬ÊÇĿǰ±àдͼÐνçÃæ±È½ÏÁ÷Ðеĸ߲㺯Êý¿âÖ®Ò»¡£LinuxµÄÖ÷Á÷×ÀÃæÏµÍ³Ö®Ò»µÄGNOME¾ÍÊÇÓÃGTK¿ª·¢³öÀ´µÄ¡£GTK±¾ÊÇÔÚͨÓÃPC»úÉÏʹÓ㬲»ÊÇרΪǶÈëʽϵͳ¿ª·¢µÄ¡£µ«ÓÉÓÚËüµÄÄ£¿é»¯Éè¼ÆºÍÈ«C±àдµÄÌØÐÔ£¬¼æÈÝÐԺã¬ÔËÐÐÎȶ¨£¬ÇÒËüµÄ¿âÒ²±È½ÏС£¬GTK¼ÓÉÏX·þÎñÆ÷½öÕ¼ÓÃ2.9MµÄÓ²Å̿ռ䣬¼æ¹Ë¿¼ÂÇÐÔÄܺʹ洢¿Õ¼ä£¬ËüÍêÈ«¿ÉÒÔÓÃÓÚ¿ª·¢Ç¶ÈëʽµÄGUIÓ¦ÓóÌÐò£¬ÇÒ¾ßÓÐÃâ·Ñ´ÓÍøÉÏ»ñȡԴ´úÂëµÄÓŵ㡣
Òª¿ª·¢GTKÓ¦ÓóÌÐò£¬×îÏÈ×öµÄÊǵ±È»ÊÇ´ÓÍøÉÏÏÂÔØÒ»·ÝÔ´´úÂë²¢°²×°¡£°²×°²½ÖèÈçÏ£º
-
´ÓÍøÉÏÏÂÔØGTKÔ´´úÂë°ü£¬½«Æä¿½±´µ½¿ª·¢Æ½Ì¨µÄÖ¸¶¨Ä¿Â¼Ï¡£
-
½øÈëLinux²Ù×÷ϵͳ£¬´ò¿ªÖÕ¶ËÓ¦ÓóÌÐò£¬ÔÚ¿ØÖÆÌ¨ÏÂÇл»µ±Ç°Ä¿Â¼ÖÁGTKµÄÔ´´úÂë°üµÄĿ¼Ï¡£
-
¼üÈëÒÔÏÂÃüÁ
% gzip -cd gtk-1.2.10.tar.gz | tar xvf - # ÔÚµ±Ç°Ä¿Â¼Ï½⿪Դ´úÂëѹËõ°ü
% cd gtk-1.2.10 # ½øÈëGTKÔ´´úÂë°üµÄ×î¸ß²ãĿ¼
% ./configure # ²úÉúMakefileÎļþ
% make # ±àÒëGTKÔ´´úÂë
(ÒÔϱØÒªÊ±±ØÐëÇл»µ½ROOT¹ÜÀíȨÏÞ)
% rm -rf /install-prefix/include/gtk /install-prefix/include/gdk
# ɾ³ý¾É°æ±¾µÄGTK(ÈôÓÐ)
% make install # ½øÐа²×°
4¡¢Îª¼Ó¿ìͼÐγÌÐò¿ª·¢µÄËÙ¶È£¬»¹Òª°²×°glade1.2Õâ¸öGTK¿ª·¢µÄ¸¨Öú¹¤¾ß£¬ÆäÔ´´úÂë°ü¿É´ÓÏà¹ØÍøÕ¾ÏÂÔØ¡£ÈôÓÃRedHat²Ù×÷ϵͳ£¬¿ÉÒÔͨ¹ýÑ¡ÔñÈí¼þ×é¼þÀ´°²×°Ëü¡£
GTKÐèÒªµÄÖ§³Ö¿âÖ÷ÒªÓÐGLIBͼÐεײ㺯Êý¿â¡¢GDKº¯Êý¿â¼°Ò»Ð©Í¼ÐÎÏÔʾ´¦ÀíºÍÊýѧ¿â¡£Ç°Á½ÕßÔÚGTKÔ´´úÂëÖÐÒѾ°üº¬£¬ÆäËûµÄ¿âÒ»°ãµÄLinuxϵͳÄں˾ù´øÓС£
¶þ¡¢ÓÃGLADE½â¾öGTK½çÃæ²¼¾ÖÎÊÌâ
ÔÚLinuxÏ¿ª·¢GUIÓ¦ÓóÌÐò²»ÏñÔÚWindowsÏÂÄÇÑù·½±ã£¬ÒòΪËüûÓм¯³É¿ª·¢»·¾³£¬Òª×Ô¼º¶¨ºÃ±àÒëÎļþMakefile£¬¾ÍÏñ¿ª·¢DOS³ÌÐòÄÇÑù¡£ÓÖÓÉÓÚGUIµÄÌØµã£¬±ØÐ붨λÏÔʾÔÚÆÁÄ»ÉϿؼþµÄλÖ㬶øÈç¹ûûÓм¯³É¿ª·¢»·¾³£¬¹âÓóÌÐò¶¨Î»¾ÍÊ®·Ö·³Ëö£¬Òò´Ë±ØÐë½èÖúµÚÈý·½µÄ¿ª·¢¹¤¾ß¡£
gladeÊÇרΪ¿ª·¢GTKÓ¦ÓóÌÐò¶øÉè¼ÆµÄ¸¨Öú¹¤¾ß£¬ËäÈ»Ëü²»ÏñWindowsϵÄVB¡¢VC++ÄÇÑù±¾Éí´øÓбàÒëµ÷ÊÔϵͳ£¬µ«ÊǶԲ¼¾ÖGTKµÄ¿Ø¼þ¡¢µ÷Õû½çÃæµÄ´óСȴʮ·ÖÓÐÓã¬Ëü¿ÉÒÔÉú³É½çÃæ²¼¾ÖµÄÔ´´úÂë¡£
GladeÉú³ÉµÄÔ´´úÂëÖ÷ÒªÓÐmain.c, interface.c, callbacks.c, support.cºÍÏà¹ØµÄ±àÒëËùÐèµÄÎļþÈçMakefileµÈ£¬ÕâЩ´úÂëÉú³ÉÁËÕû¸öÓ¦ÓóÌÐòµÄÖ÷Òª¿ò¼Ü£¬ÆäÖÐmain.cÊÇÖ÷Òýµ¼³ÌÐòºÜ¼òµ¥£¬Ö÷ÒªÍê³É³õʼ»¯µÄ¹¤×÷¡£interface.cÊǽçÃæ²¼¾Ö³ÌÐò£¬support.c°üº¬ÓÐһЩ±ØÒªµÄÖ§³Öº¯Êý£¬callbacks.cÊǻص÷º¯ÊýÎļþ£¬Ò²ÊÇÕû¸öÓ¦ÓóÌÐòµÄÖ÷Ì壬gladeÖ»ÄÜÉú³ÉÏà¹ØµÄº¯ÊýÃû£¬¾ø´ó²¿·Ö¿¿È˹¤ÊÖд£¬ËüÍê³ÉÁËÓ¦ÓóÌÐòµÄÖ÷Ì幦ÄÜ¡£
ÓÃgladeн¨Ò»¸ö¹¤³Ì£¬²¼¾ÖºÃ¿Ø¼þ½çÃæºó£¬ÔÚ¿ØÖÆÌ¨ÏÂÇл»µ½¸Ã¹¤³ÌËùÔÚµÄ×î¸ß²ãĿ¼£¬æIÈë./autogen.sh¼´¿ÉÉú³ÉMakefile£¬Ï´θijÌÐòʱ£¬Ö»ÒªÔÚcallbacks.cÀïÃæ±à¼¼´¿É£¬±à¼Íê³ÌÐòºóÇл»µ½¹¤³ÌËùÔÚµÄsrcĿ¼Ï£¬ÄÇÀïÓÐÒ»¸öMakefileÎļþ£¬ÔÚÃüÁîÐмüÈëmakeÃüÁî±ã¿ÉÒÔ±àÒë³ö¿ÉÖ´ÐгÌÐò¡£Ò²¿ÉÒÔ×Ô¼ºÐ´Makefile£¬ÄÇÑù±Èglade×Ô¶¯Éú³ÉµÄÒª¼ò½àµÃ¶à£¬¸ù¾ÝǶÈëʽĿ±êϵͳµÄÌØµã£¬±¾ÎIJÉÓÃÁ˺óÕßÕâÖÖ·½·¨¡£
Èý¡¢ ±àдMakefileÎļþ±àÒë³ÌÐò
³ÌÐòдºÃºó£¬ÒªÕæÕýÔËÐÐÆðÀ´»¹ÓÐÀµÓÚ±àÒëϵͳµÄ±àÒ룬¶øMakefileÎļþÊDz»¿ÉȱÉÙµÄÒ»»·¡£Èç½ñÒ»°ãµÄÈí¼þ¹¤³Ì¶¼Ê¹ÓöàÎļþµÄÏîÄ¿£¬Ëü½«Íê³É¹¦ÄÜÀàËÆµÄÔ´´úÂ뼯Öе½Ò»¸öÎļþÀͨ¹ýÍ·Îļþ¼°ÉùÃ÷À´Ï໥ÁªÏµ¡£ÕâÑù×öµÄÄ¿µÄÊǼõÉÙ±àÒëµÄʱ¼ä£¬²»ÖÁÓÚÿ´ÎΪÁËÒ»¸öССµÄ¸Ä¶¯¶ø±àÒëÕû¸öÏîÄ¿£¬Í¬Ê±Î¬»¤ºÍÐ޸ĴúÂëʱҲ±È½ÏÈÝÒס£
ΪÁËʵÏÖ¶àÎļþÏîÄ¿µÄ¹ÜÀíºÍ±àÒ룬ÏÖÔÚµÄLinuxϵͳÖ÷ÒªÓõÄÊÇGNU MAKE¹¤¾ß£¬ÓÉÈí¼þÏîÄ¿µÄMakefileÎļþÀ´ÊµÏÖ¡£±àÒë³ÌÐòʱ£¬GNU MAKE»á¶ÁÈëÆä¶ÔÓ¦µÄMakefileÎļþ£¬¸ÃÎļþÖ÷ÒªÊÇÖ¸¶¨¸÷¸öÄ¿±êÎļþ(³£Ö¸Ö´ÐгÌÐò¡¢¶þ½øÖÆÄ£¿éºÍ¶¯¾²Ì¬¿â)ÊÇ´ÓÄÄЩԴ´úÂëÎļþ(Ò²³ÆÒÀ¿¿Îļþ)²úÉú£¬ÓÃʲôÑùµÄÃüÁîºÍ¹æÔòÀ´½øÐÐÕâ¸ö²úÉú¹ý³Ì¡£ÓÐÁËÏà¹ØµÄÐÅÏ¢£¬Make¹¤¾ß¾Í»á¼ì²éÓ²ÅÌÉϵÄÎļþ£¬Èç¹ûÄ¿µÄÎļþµÄʱ¼ä´Á±ÈÖÁÉÙÒ»¸öËüµÄÒÀ¿¿Îļþ¾ÉµÄ»°£¬Make¾Í»áÖØÐ±àÒëÕâ¸öÒÀ¿¿ÎļþÒÔÉú³ÉеÄÄ¿±êÎļþ¡£MakeĬÈÏÕÒµÄÎļþÃûÊÇMakefile£¬Ò²¿ÉÒÔÔÚÃüÁîÐÐÖ¸¶¨±ðµÄÎļþÃû¡£¹ØÓÚMakefileÎļþµÄÓï·¨¹æÔòÇë²Î¿¼Ïà¹ØÎÄÏףۣݡ£
ÓÉglade²úÉúµÄMakefileÎļþÌ«¹ý·±ÔÓ£¬²ÉÓÃ×Ô±àдµÄMakefileÎļþά»¤ºÍÉý¼¶¶¼±È½ÏÈÝÒס£¶ÔGTK+²ÉÓö¯Ì¬±àÒëµÄ·½Ê½£¬Ò²¿É²ÉÓþ²Ì¬·½Ê½¡£È籾ǶÈëʽϵͳGTKÒªÓõ½GDK_PIXBUFº¯Êý¿â¾ÍÒªÓþ²Ì¬±àÒ룬ÒòΪǶÈëʽϵͳµÄC¿â°æ±¾Ì«µÍ¡£ÈçÒª±àÒëµÄÄ¿±êÎļþÃûΪinitform£¬ÔòMakefileÎļþÄÚÈÝÈçÏÂËùʾ£º
#THE FOLLOWING IS MY MAKEFILE
CC = gcc
CFLAGS= -Wall -O3 -g
GTK_CONFIG_CFLAGS=`gtk-config --cflags` -I/usr/include/gdk-pixbuf-1.0/
GTK_CONFIG_LIBS= `gtk-config --libs` -Wl,-Bstatic -lgdk_pixbuf
initform: main.o support.o interface.o callbacks.o
$(CC) main.o support.o interface.o callbacks.o -o initform $(GTK_CONFIG_LIBS)
main.o: main.c support.h interface.h callbacks.h
$(CC) $(CFLAGS) -c main.c -o main.o $(GTK_CONFIG_CFLAGS)
support.o: support.c support.h
$(CC) $(CFLAGS) -c support.c -o support.o $(GTK_CONFIG_CFLAGS)
interface.o: interface.c interface.h support.h callbacks.h
$(CC) $(CFLAGS) -c interface.c -o interface.o $(GTK_CONFIG_CFLAGS)
callbacks.o: callbacks.c callbacks.h support.h interface.h
$(CC) $(CFLAGS) -c callbacks.c -o callbacks.o $(GTK_CONFIG_CFLAGS)
clean:
rm -f *.o initform
ÆäÖÐ-Wl,-BstaticÊǾ²Ì¬±àÒëµÄÑ¡ÏGTKÓÃĬÈϵÄÅäÖóÌÐògtk-config –libs ÉèÖÿâºÍÍ·ÎļþµÄ·¾¶£¬ËüʹÓö¯Ì¬±àÒ뷽ʽ¡£Éú³ÉMakefileÎļþºó£¬ÔÚ¿ØÖÆÌ¨ÏÂÊäÈëmakeÃüÁǶÈëʽµÄGUIÓ¦ÓóÌÐò¾ÍÉú³ÉÁË¡£
²Î¿¼ÎÄÏ×
1 ÀîÉÆÆ½£¬ÁõÎķ壬Íõ»ÀÁú. LinuxÓëǶÈëʽϵͳ. Ç廪´óѧ³ö°æÉ磬2002
2 ×Þ˼éó. ǶÈëʽLinuxÉè¼ÆÓëÓ¦ÓÃ. Ç廪´óѧ³ö°æÉ磬2002
3 ÍõѧÁú. ǶÈëʽLinuxϵͳÉè¼ÆÓëÓ¦ÓÃ. Ç廪´óѧ³ö°æÉ磬2001
4 ÓÚÃ÷¼ó£¬³ÂÏòÃ÷£¬·½ºº. Linux³ÌÐòÉè¼ÆÈ¨ÍþÖ¸ÄÏ. »úе¹¤Òµ³ö°æÉ磬2001
5 ÁªÏëÈí¼þ³¬Ðǿչ¤×÷ÊÒ. ¾«Í¨Linuxϵͳ¹ÜÀíÓëÓ¦Óÿª·¢¼¼Êõ. Ç廪´óѧ³ö°æÉ磬2001
6 ÀîÖ÷è¡. LinuxÃæÏò¶ÔÏ󴰿ڸ߼¶±à³Ì. ¿ÆÑ§³ö°æÉ磬20015
7 ÐìǧÑó. Linux º¯Êý¿â²Î¿¼ÊÖ²á. ÖйúÇàÄê³ö°æÉ磬200
8 ÎâÏò·å. GNOME/GTK+±à³Ì±¦µä. Arthur Griffith. µç×Ó¹¤Òµ³ö°æÉ磬2000
Developing the Linux Embedded GUI Application using GTK
Luo XianQuan Shang ChaoXuan Gao Qin
(ordnance engineering college , shijiazhuang 050003)
Abstract: Human has come into the digital age along with the development of the digital information technology and the network technology. The embedded system based which has entered every side of people life including the science study, engineering design, military affairs, etc. Because the embedded system is more and more complex, developing embedded GUI application has being a trend. The article will study the technique of embedded GUI and the method to develop it using GTK in Linux.
Keywords: Embedded GUI GTK Linux
×÷Õß¼ò½é£ºÂÞÏÍÈ«£¬ÄУ¬1977ÄêÉú£¬ºº×壬µ¼º½ÖƵ¼Óë¿ØÖÆ×¨ÒµË¶Ê¿£¬Ö÷ÒªÑо¿·½Ïò£ºµç×Ó×°±¸ÐÔÄܲâÊԺ͹ÊÕÏÕï¶Ï£¬ÁªÏµµç»°£º0311-7994633¡£
×÷Õß:ÂÞÏÍÈ« Éг¯Ðù ¸ßÇÚ ¸üÐÂÈÕÆÚ:2006-07-10
À´Ô´:autocontrol.com.cn
ä¯ÀÀ´ÎÊý:
Ïà¹ØÎÄÕÂ
Ïà¹ØÆÀÂÛ ·¢±íÆÀÂÛ
Yimin [2006-09-01]
À¬»øÎÄÕ£¬Ò»µãʵÖÊÐÔÄÚÈݶ¼Ã»ÓС£»¹ÊǸö˶ʿдµÄ£¬»è°¡¡£
pingfan [2006-11-18]
û´í£¬´¿´âÀ¬»ø£¬»¹ÓÐÁ³Ð´ÄØ¡£