详解 Ubuntu 10.10下 Qt 与 wxWidgets 编译

移动开发
Qt的安装比较方便,在官方网站上下载Qt Creator2.1.0(有.bin格式的二进制安装包)和Qt-everywhere-opensource-src-4.7.3的源码包,对于IDE,可以直接./*.bin,就会弹出安装窗体,和Windows一样安装即可。

Ubuntu 10.10下QtwxWidgets 编译十本文介绍的内容,不多说,下来看内容。近期由于项目需要,要调研GUI库,经查阅资料,发现相对比较出色的就是QtwxWidgets这两个了,因此这里选择对二者安装试用。源码安装的技巧和习惯可以参考我的文章Linux下源码安装的经验总结。

Qt的安装比较方便,在官方网站上下载Qt Creator2.1.0(有.bin格式的二进制安装包)和Qt-everywhere-opensource-src-4.7.3的源码包,对于IDE,可以直接./*.bin,就会弹出安装窗体,和Windows一样安装即可。完成后解压缩源码包tar vxf *.tar.gz即可,接下来输入./configure,程序开始检查安装环境,如果提示缺少g++,请参见我的另一篇文章Ubuntu10.10下安装gcc-4.5.3。

然后又会提示libX11未找到,这个比较麻烦,要装蛮久的,在这里列出需要的东西,libX11-6.2.1、libXau-1.0.6、libXext-1.0.4、libXrender-0.9.4、libXtrans-0.1、renderproto-0.9.3、xextensions-1.0.1、xextproto-7.0.3、xproto-7.0.13以及xtrans-1.2.6,这些东西都可以在http://freedesktop.org/Software/xlibs这个网站上下载到,值得一提的是,在GTK+的安装过程中,虽然已安装libX11但仍提示libX11 not found的解决办法就是安装libXext,这个问题在安装gtk时困扰了我好久,贴出来作为前车之鉴。

安装X11的过程中,libX11的make时会出现一个错误提示XK_Ocaron或者是XK_Ccedillaabovedot等未定义,根据错误提示查看src下的KeyBond.c文件,出错部分代码如下:

  1. view plaincopy to clipboardprint?  
  2. case 0x16: /* Caucasus, Inupiak, Guarani */    
  3.         if (sym == XK_ocaron || sym == XK_Ocaron) {     
  4.         *upper = XK_Ocaron;     
  5.         *lower = XK_ocaron;     
  6.         }     
  7.         else if (sym >= XK_Ccedillaabovedot && sym <= XK_Obarred)     
  8.         *lower += (XK_ccedillaabovedot - XK_Ccedillaabovedot);     
  9.         else if (sym >= XK_ccedillaabovedot && sym <= XK_obarred)     
  10.         *upper -= (XK_ccedillaabovedot - XK_Ccedillaabovedot);     
  11.     else if (sym == XK_schwa || sym == XK_SCHWA) {     
  12.         *lower = XK_schwa;     
  13.         *upper = XK_SCHWA;     
  14.     }     
  15.     else if (sym == XK_lbelowdot || sym == XK_Lbelowdot) {     
  16.         *lower = XK_lbelowdot;     
  17.         *upper = XK_Lbelowdot;     
  18.     }     
  19.     else if (sym == XK_lstrokebelowdot || sym == XK_Lstrokebelowdot) {     
  20.         *lower = XK_lstrokebelowdot;     
  21.         *upper = XK_Lstrokebelowdot;     
  22.     }     
  23.     else if (sym == XK_gtilde || sym == XK_Gtilde) {     
  24.         *lower = XK_gtilde;     
  25.         *upper = XK_Gtilde;     
  26.     }     
  27.         break;    
  28. case 0x16: /* Caucasus, Inupiak, Guarani */  
  29.         if (sym == XK_ocaron || sym == XK_Ocaron) {  
  30.      *upper = XK_Ocaron;  
  31.      *lower = XK_ocaron;  
  32.         }  
  33.         else if (sym >= XK_Ccedillaabovedot && sym <= XK_Obarred)  
  34.      *lower += (XK_ccedillaabovedot - XK_Ccedillaabovedot);  
  35.         else if (sym >= XK_ccedillaabovedot && sym <= XK_obarred)  
  36.      *upper -= (XK_ccedillaabovedot - XK_Ccedillaabovedot);  
  37.  else if (sym == XK_schwa || sym == XK_SCHWA) {  
  38.      *lower = XK_schwa;  
  39.      *upper = XK_SCHWA;  
  40.  }  
  41.  else if (sym == XK_lbelowdot || sym == XK_Lbelowdot) {  
  42.      *lower = XK_lbelowdot;  
  43.      *upper = XK_Lbelowdot;  
  44.  }  
  45.  else if (sym == XK_lstrokebelowdot || sym == XK_Lstrokebelowdot) {  
  46.      *lower = XK_lstrokebelowdot;  
  47.      *upper = XK_Lstrokebelowdot;  
  48.  }  
  49.  else if (sym == XK_gtilde || sym == XK_Gtilde) {  
  50.      *lower = XK_gtilde;  
  51.      *upper = XK_Gtilde;  
  52.  }  
  53.         break; 

对于这个不知道什么语言的键盘说明,可以直接将case下代码全部/**/忽略掉,只留下个break,不会影响功能,修改后再编译就可以成功了。另外,建议将这些库文件全部安装在/usr/X11R6目录下,方便统一管理,统一使用,可以减少不少麻烦。

X11安装完后,还会提示Cairo无法找到,诶,只好接着找咯!下载后安装,如果有缺失提示就装上,比较简单,略过。全部安装后,就可以正确的configure了,接下来的编译过程需要3个小时左右,要做好心理准备。安装完成后,在Qt Creator中设置qmake路径,具体方法如图:

Ubuntu 10.10下 Qt 与 wxWidgets 编译

然后就可以编写个小程序试试啦,界面不错,比较简洁。计划过段时间放出QtwxWidgets的对比评测,到时再详细截图。

有了Qt所依赖的这些库,wxWidgets的安装就不要什么东西了,在configure时加选项--with-x11就可以了。不过wxX11的成熟度还不够,在我的虚拟机上编译都是可以的,但是运行时居然没有合适的显卡驱动,界面是惨不忍睹啊!!运行dialog例程时,还有错误如下:

  1. X Error of failed request:  BadWindow (invalid Window parameter)  
  2. Major opcode of failed request:  10 (X_UnmapWindow)  
  3. Resource id in failed request:  0x0  
  4. Serial number of failed request:  388  
  5. Current serial number in output stream:  389 

经过查阅资料,也是由于显卡驱动没装的缘故。其实我是挺倾向于wxWidgets的,但是这样的不成熟,我怎么用啊!相对来说,wxgtk则成熟了不少,不过gtk+的安装太麻烦了,我装了快两个星期了,现在卡在gtk在configure时提示checking for XOpenDisplay... no libX11,快崩溃了,谁有解决的经验望能指点一二,不胜感激。

附上Windows下使用wxWidgets的简要使用说明:

安装wxWidgets源码包后要先编译,打开vs2008命令行到wxWidgets-2.9.1\build\msw下,输入

  1. nmake /f makefile.vc BUILD=debug SHARED=1 MONOLITHIC=0 UNICODE=1 

以及

  1. nmake /f makefile.vc BUILD=release SHARED=1 MONOLITHIC=0 UNICODE=1 

其中,BUILD选项配置编译类型,debug或release模式;SHARED为配置生成库的类型,0为静态库,1为动态库;MONOLITHIC选项配置构建单一库1还是多个组件库0,使用单一构建,项目的设置和开发会更加简单,同时使用DLL构建的话,只需分发一个DLL文件,如果使用非单一构建(multilib),会构建出多个不同的库,这样可以避免将整个wxWidgets的基本代码链接到主程序,就可以去掉不需要的库;UNICODE的编码方式。

编译后会出100多M涨到近2G。

再用Code::Block创建wxWidgets工程,会提示选择主目录,但是貌似CB自动选择的include和library路径都错了,进入后修改,右键"Build options",第一页#defines下加__WXMSW__(linux下加__UNIX__),第二页Link libraries下去掉wxmsw29u,添加wxmsw29ud_core.lib、wxbase29ud.lib、wxtiffd.lib、wxjpegd.lib、wxpngd.lib、wxzlibd.lib、wxregexud.lib、wxexpatd.lib。第三页将三项都改成应该指向的目录,这样配置就可以轻松的在Windows下使用wxWidgets了,界面也蛮不错的,就是缺点华丽,没Qt好看。

本文来自:http://blog.csdn.net/JuanA1/archive/2011/05/25/6446175.aspx

小结:关于详解 Ubuntu 10.10下QtwxWidgets 编译的内容介绍完了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-07-05 09:35:52

Ubuntu Qt Mysql

2011-09-07 09:47:35

UbuntuAndroid

2011-07-01 10:23:41

Ubuntu Qt Creator

2011-07-02 14:11:46

Qt Gtk Ubuntu

2011-07-05 11:10:23

Linux Qt 移植

2011-07-05 10:55:14

Linux Qt 移植

2011-06-21 17:01:44

Qt 静态 编译

2023-03-09 11:02:40

linux编译源码

2011-07-01 13:15:50

Ubuntu QT Eembedded

2011-09-14 15:04:47

Android 2.2

2011-06-21 17:23:40

QT 编译

2011-06-24 13:27:13

Ubuntu QT SDK

2011-07-01 13:31:29

Ubuntu Linux QVFB

2011-08-29 15:52:12

2011-03-11 12:57:36

UBUNTU10.10安装LAMP

2011-09-02 16:38:26

UbuntuNTFS

2011-08-30 15:53:07

Ubuntussh

2010-11-18 09:40:08

2011-09-07 14:01:34

ubuntuPHP

2012-03-12 17:27:14

Ubuntu10.10正式结束
点赞
收藏

51CTO技术栈公众号