环境ubuntu9.10 ,编译器eldk41_gcc40,ubuntu系统是重新装过的,没有安装任何额外库
1.生成x86版本及qvfb等工具
tar -xzf qtopia-free-2.2.0.tar.gz
cd qtopia-free-2.2.0
./configure -qpe "-prefix=/usr/local/qtopia"
make
make install
整个编译过程中,会因为ubuntu默认没有下面几个库而出现错误,依次安装即可
build-essential 包括了开发工具,当然是x86版本的,也就是pc linux用的
libjpeg62-dev x86版本的jpeg库
uuid-dev x86版本的uuid库
libxext-dev x86版本的X库
apt-get install pk_name
2.arm版本
tar -xzf qtopia-free-2.2.0.tar.gz
cd qtopia-free-2.2.0
vi qtopia/mkspecs/qws/arm-linux-g++/qmake.conf
修改
QMAKE_LIBS_QT = -lqte
为
QMAKE_LIBS_QT = -lqte -lpng -lts -lz -luuid -ljpeg
当然,不修改的话,需要将马上用到的额外库放在编译器lib目录下
cd qtopia/src/libraries/qtopia
cp custom-linux-ipaq-g++.cpp custom-linux-arm-g++.cpp
cp custom-linux-ipaq-g++.h custom-linux-arm-g++.h
vi qtopia/src/qt/qconfig-qpe.h
增加
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
是qt支持触摸屏,当然没有即是不支持
去掉
#define QT_NO_QWS_CURSOR
#define QT_NO_QWS_MOUSE_AUTO
#define QT_NO_QWS_MOUSE_PC
支持鼠标,当然保留即是不支持
(以上说法并未检验)
cp qtopia/src/qt/qconfig-qpe.h qt2/src/tools
mkdir libs includes
jpeg png z ts uuid等库放到libs,相应头文件放到includes即可,其中z uuid库eldk已经带有,需要自己交叉编译jpeg png ts三个库,
编译方法网络上很多方法
./configure -qte "-embedded -xplatform linux-arm-g++ -qconfig qpe -no-qvfb -depths 24 -system-jpeg -system-libpng -system-zlib -tslib -gif -thread -no-xft -release -I$PWD/includes -L$PWD/libs" -qpe '-xplatform linux-arm-g++ -edition pda -displaysize 320x240 -I$PWD/includes -L$PWD/libs"
make
make install
之后,在qtopia/image/opt/下生成了qtopia的arm版本
3.x86版本的使用
常用的是qvfb工具和qdesigner工具,这两个工具的使用需要设置LD_LIBRARY_PATH指向qt2/lib,当然任何能找到动态库的方法均可,一般在命令行下运行,能够看到是否是因为动态库so没有而运行失败
qvfb可以使用后,接着模拟运行x86版本的qpe,需要设置LD_LIBRARY_PATH指向生成的动态库即qtopia/image/opt/qtopia/lib,QTDIR和QPEDIR指向生成的qtopia目录即qtopia/image/opt/qtopia即可,同时,需要将qt2/lib下的fonts目录copy到qtopia/image/opt/qtopia/lib/下,此时可以模拟qpe
4.arm版本的使用
需要把安装的qtopia目录整体复制到开发板的任意目录下, 同时所有使用到的第三方库放在qtopia/lib下即可
同3,arm上运行需要设置LD_LIBRARY_PATH QTDIR QPEDIR三个环境变量,QTDIR QPEDIR指向qtopia目录所在位置,LD_LIBRARY_PATH指向qtopia/lib即可
5.减肥
<1>删除部分字体,默认是helvetica,使用fixed即可,-qpe配置加上-fontfamilies fixed即可,除fontdir和fontlots均删除
6.显示中文
显示中文有2个条件,第一是支持汉字字符集,第二是系统有汉字库,qtopia默认没有开启unicode的支持,去掉qtopia/src/qt/qconfig-qpe.h 关于 #define QT_NO_CODECS的定义,即注释掉,即可支持unicode编码,即支持中文,qtopia默认的unifont字体可以显示中文,这样默认unifont字体编译即可;
7.中文化
显示中文和中文化不同,中文化是在程序彻底支持中文,qtopia本身已经做了国际化支持,通过转换机制,使用i18n下语言夹,下面的qm文件进行替换,即可中文化了
8注意:
为了节省空间,一般都要动态生成dev,那么面临一个问题是usb鼠标的热拔插问题,而不定义qtopia的usb鼠标变量,有时候会造成usb与串口冲突,解决办法也很简单,鼠标设备文件设置成mice即可