——查理·芒格
2010年1月18日星期一
最新unicode 汉字全集打印
一、最新unicode范围
=============
unicode
最新版本是2009年9月出版的5.2版,对汉字又进行了扩充。以往常说的20902个汉字,在unicode中从0x4e00-0x9fa5,但这不是全部的unicode汉字。最新版的unicode汉字块如下:
0x4E00-0x9FFF CJK 统一字型 常用字 共
20992个(实际只定义到0x9FC3)
0x3400-0x4DFF CJK 统一字型扩展表A 少用字 共 6656个
0nx20000-0x2A6DF CJK 统一字型扩展表B 少用字,历史上使用 共42720个
0xF900-0xFAFF CJK 兼容字型 重复字,可统一变体,共同字 共512个
n0x2F800-0x2FA1F CJK 兼容字型补遗 可统一变体 共544个
一共定义大陆,台湾,香港,新加坡,马来西亚汉字,日语和韩语汉字或偏旁部首71424个。某些位置可能还是空的。
unicode 汉字定义可以在http://www.unicode.org/charts/unihan.html
查到。可以直接输入16进制unicode码,也可以直接将汉字复制粘贴进入。
===============
二、打印unicode汉字的方法
===============
不清楚windows对unicode支持情况如何。下面的程序在ubuntu9.10下测试通过,调整范围即可打印整个unicode
Han(unihan)的字符。
view plaincopy to clipboardprint?
#!/bin/env python
#coding:utf8
#2010.1.17
#打印20992个汉字及unicode 16进制到hz.txt
f = open('hz.txt','w+')
i = 0
for ch in xrange(0x4e00, 0xa000):
i += 1
s = str(i)+' '+hex(ch)+':'+unichr(ch).encode('utf8')
f.write(s)
print s
if i % 10 == 0:
f.write('\n')
f.close()
程序输出文件结果摘录:
view plaincopy to clipboardprint?
1 0x4e00:一2 0x4e01:丁3 0x4e02:丂4 0x4e03:七5 0x4e04:丄6 0x4e05:丅7
0x4e06:丆8 0x4e07:万9 0x4e08:丈10 0x4e09:三
11 0x4e0a:上12 0x4e0b:下13 0x4e0c:丌14 0x4e0d:不15 0x4e0e:与16 0x4e0f:丏17
0x4e10:丐18 0x4e11:丑19 0x4e12:丒20 0x4e13:专
21 0x4e14:且22 0x4e15:丕23 0x4e16:世24 0x4e17:丗25 0x4e18:丘26 0x4e19:丙27
0x4e1a:业28 0x4e1b:丛29 0x4e1c:东30 0x4e1d:丝
31 0x4e1e:丞32 0x4e1f:丟33 0x4e20:丠34 0x4e21:両35 0x4e22:丢36 0x4e23:丣37
0x4e24:两38 0x4e25:严39 0x4e26:並40 0x4e27:丧
41 0x4e28:丨42 0x4e29:丩43 0x4e2a:个44 0x4e2b:丫45 0x4e2c:丬46 0x4e2d:中47
0x4e2e:丮48 0x4e2f:丯49 0x4e30:丰50 0x4e31:丱
51 0x4e32:串52 0x4e33:丳53 0x4e34:临54 0x4e35:丵55 0x4e36:丶56 0x4e37:丷57
0x4e38:丸58 0x4e39:丹59 0x4e3a:为60 0x4e3b:主
61 0x4e3c:丼62 0x4e3d:丽63 0x4e3e:举64 0x4e3f:丿65 0x4e40:乀66 0x4e41:乁67
0x4e42:乂68 0x4e43:乃69 0x4e44:乄70 0x4e45:久
...
...
...
20881 0x9f90:龐20882 0x9f91:龑20883 0x9f92:龒20884 0x9f93:龓20885
0x9f94:龔20886 0x9f95:龕20887 0x9f96:龖20888 0x9f97:龗20889 0x9f98:龘20890
0x9f99:龙
20891 0x9f9a:龚20892 0x9f9b:龛20893 0x9f9c:龜20894 0x9f9d:龝20895
0x9f9e:龞20896 0x9f9f:龟20897 0x9fa0:龠20898 0x9fa1:龡20899 0x9fa2:龢20900
0x9fa3:龣
20901 0x9fa4:龤20902 0x9fa5:龥20903 0x9fa6:龦20904 0x9fa7:龧20905
0x9fa8:龨20906 0x9fa9:龩20907 0x9faa:龪20908 0x9fab:龫20909 0x9fac:龬20910
0x9fad:龭
20911 0x9fae:龮20912 0x9faf:龯20913 0x9fb0:龰20914 0x9fb1:龱20915
0x9fb2:龲20916 0x9fb3:龳20917 0x9fb4:龴20918 0x9fb5:龵20919 0x9fb6:龶20920
0x9fb7:龷
20921 0x9fb8:龸20922 0x9fb9:龹20923 0x9fba:龺20924 0x9fbb:龻20925
0x9fbc:龼20926 0x9fbd:龽20927 0x9fbe:龾20928 0x9fbf:龿20929 0x9fc0:鿀20930
0x9fc1:鿁
20931 0x9fc2:鿂20932 0x9fc3:鿃20933 0x9fc4:鿄20934 0x9fc5:鿅20935
0x9fc6:鿆20936 0x9fc7:鿇20937 0x9fc8:鿈20938 0x9fc9:鿉20939
从打印结果看,0x4E00-0x9FC3是有汉字的。0x9FC4-0x9FFF还是空白。但随后的版本会逐渐往上增长。
======
三、参考:
======
官方说明:http://www.unicode.org/versions/Unicode5.0.0/ch12.pdf
unihan字符全集官方下载:ftp://ftp.unicode.org/Public/UNIDATA/Unihan.zip
最新报告:http://www.unicode.org/reports/tr38/
20902个unicode汉字及拼音表:
http://dl1.csdn.net/fd.php?i=14601582879492&s=ed7babc9bd585c105a8b58c8b33830d6
unicode 5.0和gb等的关系 http://www.fmddlmyy.cn/text24.html
vim编辑退出后乱码问题解决
下面是我google到的几种网友建议
1 我遇到过这情况,把locale改了就行,我是换成了LANG=zh_CN
LC_CTYPE="zh_CN"等
2一般用reset或者用gvim来跳过这个毛病
以前有位兄弟发过这样的贴,而且已经解决了。一时找不找。我记得好像是菜单Edit-->Current
Profile-->Title and Command里设置标题。
3
其实这不是vim的毛病,例如说如果你用konsole就没问题。实际上这是gnome-terminal的问题。在sir上看到过,只要在gnome-terminal的
配置文件-->标题和命令-->标题 中把 "终端" 两字的前后各加一个英文空格即可。
我这里也一样
没去研究过什么问题
反正很少用gvim
所以把gvim给cut 了
gnome-terminal 菜单里面--Terminal--reset 或reset and clear
最终解决:
法1 把gvim给cut 了(不是办法的方法)
查看 gvim的安装包
lingyun@lingyun:/media/movie/music/$ sudo apt-get install gvim
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package gvim is a virtual package provided by:
vim-tcl 1:7.1-138+1ubuntu3
vim-ruby 1:7.1-138+1ubuntu3
vim-python 1:7.1-138+1ubuntu3
vim-perl 1:7.1-138+1ubuntu3
vim-gtk 1:7.1-138+1ubuntu3
vim-full 1:7.1-138+1ubuntu3
vim-gnome 1:7.1-138+1ubuntu3
You should explicitly select one to install.
E: Package gvim has no installation candidate
因为 You should explicitly select one to install, 必须把上面的包都cut才行。
lingyun@lingyun:/media/movie/music/$ sudo apt-get remove vim-
[Tab]
vim-addon-manager vim-doc vim-gnome vim-gui-common vim-full
vim-scripts vim-tiny vim-gtk vim-runtime vim-syntax-gtk
vim-vimoutliner
法2 根据网友的建议及自己判断和不断的尝试,认为以下两点是关键
其实这不是vim的毛病,例如说如果你用konsole就没问题。实际上这是gnome-terminal的问题
将默认 vi 和 vim 链接到 vim.basic 此程序,解决 vi/vim 退出后终端乱码问题。
sudo update-alternatives -- config vi
sudo update-alternatives -- config vim
lingyun@lingyun:/media/movie/music/$ sudo update-alternatives --config vim
There are 3 alternatives which provide `vim'.
Selection Alternative
-----------------------------------------------
1 /usr/bin/vim.tiny
2 /usr/bin/vim.basic
*+ 3 /usr/bin/vim.gnome
Press enter to keep the default[*], or type selection number: 2
可见安装gvim后,默认vi, vim都的连接到了 /usr/bin/vim.gnome
参考:
http://www.linuxsir.org/bbs/thread225352.html
http://forum.ubuntu.org.cn/viewtopic.php?t=122314&sid=683901a07192d57b8c10691b44b0ea2c
http://forum.ubuntu.com.cn/about47661.html
http://blog.upsuper.org.cn/solve-the-problem-of-terminal-becoming-messy-after-exit-vim/
ubuntu 使用xp下的打印机
sudo aptitude install samba
然后,进入"系统-系统管理-打印",新建打印机。选最下面的"网络打印机",Windows
Printer via SAMBA,
输入IP地址和用户名密码,浏览一下共享的打印机,并选择如hpLaserJ。进入后驱动选一种品牌,如HP。选相应的型号,如HP
LaserJet 1300 Series Postscript [en][推荐]。完成。
打印机地址类似: smb://192.168.12.112/hpLaserJ
即可打印。
至此,离完全脱离XP又近了一步!
2010年1月17日星期日
网络编程小结
ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:
BOOL bReuseaddr=TRUE;
setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const
char*)&bReuseaddr,sizeof(BOOL));
2.
如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WAIT的过程:
BOOL bDontLinger = FALSE;
setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(const
char*)&bDontLinger,sizeof(BOOL));
3.在send(),recv()过程中有时由于网络状况等原因,发收不能预期进行,而设置收发时限:
int nNetTimeout=1000;//1秒
//发送时限
setsockopt(socket,SOL_S0CKET,SO_SNDTIMEO,(char
*)&nNetTimeout,sizeof(int));
//接收时限
setsockopt(socket,SOL_S0CKET,SO_RCVTIMEO,(char
*)&nNetTimeout,sizeof(int));
4.在send()的时候,返回的是实际发送出去的字节(同步)或发送到socket缓冲区的字节(异步);系统默认的状态发送和接收一次为8688字节(约为8.5K);在实际的过程中发送数据和接收数据量比较大,可以设置socket缓冲区,而避免了send(),recv()不断的循环收发:
// 接收缓冲区
int nRecvBuf=32*1024;//设置为32K
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
//发送缓冲区
int nSendBuf=32*1024;//设置为32K
setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(int));
5.
如果在发送数据的时,希望不经历由系统缓冲区到socket缓冲区的拷贝而影响程序的性能:
int nZero=0;
setsockopt(socket,SOL_S0CKET,SO_SNDBUF,(char *)&nZero,sizeof(nZero));
6.同上在recv()完成上述功能(默认情况是将socket缓冲区的内容拷贝到系统缓冲区):
int nZero=0;
setsockopt(socket,SOL_S0CKET,SO_RCVBUF,(char *)&nZero,sizeof(int));
7.一般在发送UDP数据报的时候,希望该socket发送的数据具有广播特性:
BOOL bBroadcast=TRUE;
setsockopt(s,SOL_SOCKET,SO_BROADCAST,(const
char*)&bBroadcast,sizeof(BOOL));
8.在client连接服务器过程中,如果处于非阻塞模式下的socket在connect()的过程中可以设置connect()延时,直到accpet()被呼叫(本函数设置只有在非阻塞的过程中有显著的作用,在阻塞的函数调用中作用不大)
BOOL bConditionalAccept=TRUE;
setsockopt(s,SOL_SOCKET,SO_CONDITIONAL_ACCEPT,(const
char*)&bConditionalAccept,sizeof(BOOL));
9.如果在发送数据的过程中(send()没有完成,还有数据没发送)而调用了closesocket(),以前我们一般采取的措施是"从容关闭"shutdown(s,SD_BOTH),但是数据是肯定丢失了,如何设置让程序满足具体应用的要求(即让没发完的数据发送出去后在关闭socket)?
struct linger {
u_short l_onoff;
u_short l_linger;
};
linger m_sLinger;
m_sLinger.l_onoff=1;//(在closesocket()调用,但是还有数据没发送完毕的时候容许逗留)
// 如果m_sLinger.l_onoff=0;则功能和2.)作用相同;
m_sLinger.l_linger=5;//(容许逗留的时间为5秒)
setsockopt(s,SOL_SOCKET,SO_LINGER,(const
char*)&m_sLinger,sizeof(linger));
Note:1.在设置了逗留延时,用于一个非阻塞的socket是作用不大的,最好不用;
2.如果想要程序不经历SO_LINGER需要设置SO_DONTLINGER,或者设置l_onoff=0;
10.还一个用的比较少的是在SDI或者是Dialog的程序中,可以记录socket的调试信息:
(前不久做过这个函数的测试,调式信息可以保存,包括socket建立时候的参数,采用的
具体协议,以及出错的代码都可以记录下来)
BOOL bDebug=TRUE;
setsockopt(s,SOL_SOCKET,SO_DEBUG,(const char*)&bDebug,sizeof(BOOL));
11.附加:往往通过setsockopt()设置了缓冲区大小,但还不能满足数据的传输需求,我的习惯是自己写个处理网络缓冲的类,动态分配内存。
ubuntu 使用xp下的打印机
sudo aptitude install samba
然后,进入"系统-系统管理-打印",新建打印机。选最下面的"网络打印机",Windows
Printer via SAMBA,
输入IP地址和用户名密码,浏览一下共享的打印机,并选择如hpLaserJ。进入后驱动选一种品牌,如HP。选相应的型号,如HP
LaserJet 1300 Series Postscript [en][推荐]。完成。
打印机地址类似: smb://192.168.12.112/hpLaserJ
即可打印。
搭建嵌入式QT开发环境
好用,果不其然Qt的新版本真的很好用,而且搭建起来更加容易。刚开始接触的时候,Qt的众多版本搞的自己头昏脑涨,什么Qt/x11,Qt
/win,Qt/embedded ,Qtopia
core,Qtopia等等,真的是丈二和尚摸不着头脑,幸好有网络,上网总能找到自己想要的东西,而且又不需要给予别人回报,当然自己也有些责任共享自
己的资料,看来共产主义在互联网已经开始萌芽了,哈哈。
先看看Qt的各个版本简介:
1.什么是QT
Qt是一个完整的C++应用程序开发框架。它包含一个类库,和用于跨平台开发及国际化的工具。Qt
API在所有支持的平台上都是相同的,Qt工具在这些平台上的使用方式也一致,
因而Qt应用的开发和部署与平台无关。
2.什么是Qtopia
Qtopia
是一个面向嵌入式Linux的全方位应用程序开发平台,同时也是用于基于Linux的PDA(个人数字助理),智能电话(Smartphone)以及其他
移动设备的用户界面。简单地说,Qtopia实质上是一组关于PDA和智能电话的应用程序结合,如果需要开发这类产品可以在这组程序的基础上迅速构建出
PDA或者智能电话。Qtopia实质上依赖Qt/Embedded。
3.什么是Qt/Embedded
Qt/Embedded
是一个完整的自包含GUI和基于Linux的嵌入式平台开发工具。这个开发工具的名字好像最容易混淆,当然Qt/Embedded是最熟悉的名字,好像
Qtopia
Core说的也是它。最近,奇趣公司又该名字了,它的新名字叫做qt-embedded-linux-xxxx,看来这个Qt/Embedded的马甲还
很多哈。
下面就是搭建Qt开发平台了,我的平台是fedora core
7,需要的Qt版本有两个:
qt-x11-opensource-src-4.3.2.tar.gz
qt-embedded-linux-opensource-src-4.4.0-rc1.tar.bz2
qt-x11版本可以产生Qt开发工具,如designer等等,最重要的是可以得到qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。qt-embedded版本就是专门用于嵌入式方面的版本。下面是安装步骤:
1. 解压这两个qt包
a) tar –jxvf qt-x11-opensource-src-4.3.2.tar.gz
b) tar –jxvf
qt-embedded-linux-opensource-src-4.4.0-rc1.tar.bz2
c) cp qt-embedded-linux-opensource-src-4.4.0-rc1
qt-embedded-linux-opensource-src-4.4.0-rc1-x86
d) mv qt-embedded-linux-opensource-src-4.4.0-rc1
qt-embedded-linux-opensource-src-4.4.0-rc1-arm
这里,qt-embedded有两个复制:qt-embedded-linux-opensource-src-4.4.0-rc1-x86
和qt-embedded-linux-opensource-src-4.4.0-rc1-arm,根据他们的名字可以知道前者是适合x架构的,后者适
合arm架构为什么需要两个呢?如果有开发板的话,可以只编译qt-embedded版本成arm架构的就可以了,但是很多时候用qvfb的话,开发会方
便很多,所以多编译一个x86架构的也不错。这里是否有些疑问,qt-x11也是适合x86结构的,这不是和qt-embedded重复了吗?答案是这样
的,qt-embedded版本只能在嵌入式板子上面运行,编译成x86架构的程序也只能在x86的嵌入式板子上跑。前面说过,我们需要qvfb来开发,
但是qvfb只能执行x86架构的应用程序,所以需要让qt-embedded生成关于x86的库和其他文件。而将qt-embedded编译成arm,
又是为什么呢?道理很简单,我最终的qt应用程序需要在arm架构上面运行,当然需要这方面的库,所以编译成arm也就顺理成章了。好了,现在简单的总结
一下,首先,使用qt-x11提供的库和开发工具开发出qt应用程序,然后使用qt-embedded关于x86库和工具再次编译我们开发qt应用程序,
这是所得到的可执行文件就可以在qvfb上运行了,最后,使用qt-embeddedd的arm库再次编译就可以得到在arm上能运行的可执行程序。很明
显,如果有开发板,第二步是可要可不要的(最好是要),如果没有开发板的话,第三步也就没必要了,这样就不需要将qt-embedded编译成适合arm
架构的。
-----------------------------------------------------------
具体步骤与说明:
1. 下载源码包
qt-x11-opensource-src-4.5.0.tar.bz2
qt-embedded-linux-opensource-src-4.5.0.tar.bz2
下载地址:ftp://ftp.qtsoftware.com/qt/source/
2.编译及安装qt-x11-opensource-src-4.5.0
qt-x11版本可以产生Qt开发工具,如designer等等,最重要的是可以得到qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。qt-embedded版本就是专门用于嵌入式方面的版本。
tar xjvf qt-x11-opensource-src-4.5.0.tar.bz2
cd qt-x11-opensource-src-4.5.0
./configure
make
make install
历经漫长的编译过程,约一个半小时,默认安装在/usr/local/Trolltech/Qt-4.5.0下.编译完成后源程序不要删除,还有用。
3.编译及安装qt-embedded-linux-opensource-src-4.5.0
在用户目录下建立一个src目录,用于存放编译源文件qt-embedded-linux-opensource-src-
4.5.0.tar.bz2。将其解压得到qt-embedded-linux-opensource-src-4.5.0,重命名为qt-
embedded-linux-opensource-src-4.5.0-x86.
再次解压qt-embedded-linux-opensource-src-4.5.0.tar.bz2,并重命令为qt-embedded-
linux-opensource-src-4.5.0-arm.为什么有两个复制呢?我们可以从他们的名字上就不难看出前者是适合x架构的,后者适合
arm架构的,如果有开发板的话,可以只编译qt-embedded版本成arm架构的就可以了,但是很多时候用qvfb的话,开发会方便很多,所以多编
译一个x86架构的也不错。
mkdir ~/src
mv qt-embedded-linux-opensource-src-4.5.0.tar.bz2 ~/src
tar xjvf qt-embedded-linux-opensource-src-4.5.0.tar.bz2
mv qt-embedded-linux-opensource-src-4.5.0
qt-embedded-linux-opensource-src-4.5.0-x86
tar xjvf qt-embedded-linux-opensource-src-4.5.0.tar.bz2
mv qt-embedded-linux-opensource-src-4.5.0
qt-embedded-linux-opensource-src-4.5.0-arm
cd qt-embedded-linux-opensource-src-4.5.0-x86
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-x86
-embedded
x86 -qvfb
make
make install
-------OK!qt-embedded-x86被安装在/usr/local/Trolltech/QtEmbedded-4.5.0-x86下.
cd qt-embedded-linux-opensource-src-4.5.0-arm
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-arm
-embedded
arm
make
make install
-------OK!qt-embedded-arm被安装在/usr/local/Trolltech/QtEmbedded-4.5.0-arm下.
4.至此我们已经安装好了qt-x11版,即在PC机上运行的QT,qt-embedded-x86版(x86体系的嵌入式板子上运行的QT)和qt-embedded-arm(arm板子上运行的QT).下一步:设置环境变量
(1)qt-x11:
vi setenv.sh
添加如下内容:
PATH=/usr/local/Trolltech/Qt-4.5.0/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.5.0/lib:$LD_LIBRARY_PATH
保存退出.移到/usr/local/Trolltech/Qt-4.5.0中。
(2)qt-embedded-x86:
vi setenv.sh
添加如下内容:
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-x86
PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-x86/lib:$LD_LIBRARY_PATH
保存退出.移到/usr/local/Trolltech/QtEmbedded-4.5.0-x86中。
(3)qt-embedded-arm:
vi setenv.sh
添加如下内容:
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-arm
PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/lib:$LD_LIBRARY_PATH
保存退出.移到/usr/local/Trolltech/QtEmbedded-4.5.0-arm中。
我们在运行的时候分别运行对应的脚本即可,比如我们要用qt-x11:
cd /usr/local/Trolltech/Qt-4.5.0
source setenv.sh
然后就可以用qmake designer等工具了.
5.做到这一步还有qvfb没有编译,到qt-x11-opensource-src-4.5.0中重新编译qvfb即可
cd qt-x11-opensource-src-4.5.0
cd /tools/qvfb
make
--会在qt-x11-opensource-src-4.5.0/bin下生成qvfb,我们将它copy至/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin下
cp ../..bin/qvfb /usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin
6.做一个测试
cd /usr/local/Trolltech/QtEmbedded-4.5.0-x86
source setenv.sh
cd /usr/local/Trolltech/QtEmbedded-4.5.0-x86/demos/books
qvfb -width 640 -height 480 &
./books -qws
-----------------------------------------------------------
出错信息一般为
Error opening buffer device /dev/fb0QScreenLinuxFb::connect: No such file
or
directory这种情况发生最多的是编译Qt-Embedded的x86版本,希望在qvfb上运行应用时
使用者在
第一步运行qvfb后
第二步运行./myapp -qws
出现以上的提示错误
原因是Qt-Embedded在查找系统的显示设备时,默认去寻找LinuxFb,也即Linux的/dev/fb0设备,但是如果Qt-
Embedded安装了其它显示设备,比如qvfb,则可以在qvfb上显示,但是需要一个插件(或者说驱动,可能会和设备驱动混淆),使Qt-
Embedded能使用qvfb。
为了作到这一点,需要在编译Qt-Embedded时的configure命令加上如下选项
./configure -plugin-gfx-qvfb -plugin-kbd-qvfb -plugin-mouse-qvfb
或./configure -qt-gfx-qvfb -qt-kbd-qvfb
-qt-mouse-qvfb如果,你不想重新编译Qt-Embedded,也可以单独编译qvfb的gfxdrivers,命令如下
$ cd
qt-embedded-linux-opensource-src-4.5.1/src/plugins/gfxdrivers/qvfb/$/usr/local/Trolltech/QtEmbedded-4.5.1/bin/qmake$
sudo make install对应所在的路径,在大家的机器上可能不尽相同,领会意思就行