详解 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文件,出错部分代码如下:

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

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

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

Ubuntu 10.10下 Qt 与 wxWidgets 编译

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

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

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

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

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

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

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 
  • 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 10:55:14

Linux Qt 移植

2011-07-05 11:10:23

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

2012-03-02 10:42:07

Ubuntu升级

2010-11-18 09:40:08

2012-03-12 17:27:14

Ubuntu10.10正式结束

2011-08-30 15:53:07

Ubuntussh

2011-09-07 14:01:34

ubuntuPHP
点赞
收藏

51CTO技术栈公众号