在网上看到有人谈QTE的时候说道,"如果你要做Qt/Embedded的开发,最好把Qt/Embedded编译成为两个版本,一个是主机版,一个是
目标版"
。
当时不明白为什么。后来发现,果然。。。。需要QTE支持的东东,往往都需要用到uic这个TOOLS。。。而这个工具总会出错。
原来,uic命令是在编译QT时候生成的,它可以把Designer设计的界面文件(*.ui)转换成为相应的C++文件(*.cpp和*.h),然后
让gcc进行编译。
而我在configure的时候把目标环境定为了-xplatform
linux-arm-g**,所以Qt/Embedded在编译生成uic命令的时候,会使用的是交叉编译工具链(如
arm-linux-g**),也就是说uic被编译成为arm-elf格式的二进制文件了。故之后再编译其他工具时,Qt/Embedded调用
uic
来生成.cpp和.h会出现错误,因为这个uic没有办法在x86的环境下运行。
所以,为了这个uic,我们需要先build一次x86版的。。。。
过程如下:
在获得Qt/Embeded的源码(free版的源码可在www.trolltech.com下载)之后,先解压到任意目录(比如:/root/
qte-host)。
1.) export环境变量
比如:
export QTDIR=/root/qte-host
export QTEDIR=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
2.) 运行./configure
一般需要加必要的参数(可运行./configure
-h查看参数及意义)。
比如我的参数:
./configure -system-jpeg -gif
3.) make sub-src
这一步是编译生成库文件,但不编译其他的(如tools、examples目录下的东西)。
编译完成会在lib目录下生成库
比如:
libqte.so -> libqte.so.2.3.10
libqte.so.2 -> libqte.so.2.3.10
libqte.so.2.3 -> libqte.so.2.3.10
libqte.so.2.3.10
4.) cd tools;make
编译目标版本:
1.) export环境变量
export QTDIR=/root/qte-arm
export QTEDIR=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
2.) 运行./configure ---
因为我是要用OPIE,所以使用它要求的配置
cd $QTDIR
echo 'yes' | ./configure -qconfig qpe -depths 4,16,24,32 -system-jpeg
-system-libpng -system-zlib -no-xkb -no-sm -no-xft -xplatform
arm-linux-g++
(我的系统里是arm-linux-gnueabi-g**,因此还要到configs目录里编辑arm-linux-share)
3.) 复制uic命令
cp /qte/qte-host/bin/uic /qte/qte-arm/bin/
3.) 编译Qt/Embedded函数库
make sub-src
据说也可以用相同系列的x11的uic来替代,但也有人提到,细节上会有差异。所以。。还是漫漫BUILD吧。。。
如果想将自己的AP加入原先的BUILD,则需要添加更改
core/applets/config.in
而不是它自己说明文档里所写,更改packages
OPIE其实需要thread支持,编译QTE的时候记得要加 -thread
选项~~~
正确的写法应该是:
echo 'yes' | ./configure -qconfig qpe -depths 4,16,24,32 -system-jpeg
-system-libpng -system-zlib -no-xkb -no-sm -no-xft -thread -xplatform
arm-linux-g++
setCursor( QCursor( BlankCursor) ); 可以隐藏鼠标
但切记必须是 QApplication a( argc, argv );
如果是QPEApplication a( argc, argv );
则怎么搞都影响不了光标。。。
没有评论:
发表评论