Ubuntu10.10下Qt与wxWidgets的编译安装

近期由于项目需要,要调研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.1libXau-1.0.6libXext-1.0.4libXrender-0.9.4libXtrans-0.1renderproto-0.9.3xextensions-1.0.1xextproto-7.0.3xproto-7.0.13以及xtrans-1.2.6,这些东西都可以在http://freedesktop.org/Software/xlibs这个网站上下载到,值得一提的是,在GTK+的安装过程中,虽然已安装libX11但仍提示libX11 not found的解决办法就是安装libXext,这个问题在安装gtk时困扰了我好久,贴出来作为前车之鉴。安装X11的过程中,libX11make时会出现一个错误提示XK_Ocaron或者是XK_Ccedillaabovedot等未定义,根据错误提示查看src下的KeyBond.c文件,出错部分代码如下:

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下代码全部/**/忽略掉,只留下个break,不会影响功能,修改后再编译就可以成功了。另外,建议将这些库文件全部安装在/usr/X11R6目录下,方便统一管理,统一使用,可以减少不少麻烦。

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

 

Ubuntu10.10下Qt与wxWidgets的编译安装_第1张图片

然后就可以编写个小程序试试啦,界面不错,比较简洁。计划过段时间放出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

经过查阅资料,也是由于显卡驱动没装的缘故。其实我是挺倾向于wxWidgets的,但是这样的不成熟,我怎么用啊!相对来说,wxgtk则成熟了不少,不过gtk+的安装太麻烦了,我装了快两个星期了,现在卡在gtkconfigure时提示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

以及

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

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

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

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

 

 

你可能感兴趣的:(windows,ubuntu,dll,Build,qt,gtk)