export QTDIR="/home/zozowit/cross/qt/qte-qpe-opt-src.121604/qt-embedded-free-3.0.4"
打上板子带的三个补丁文件:
10 patch -c -l -p1 -d src < ../qte-FinalOpt.patch
11 patch -p1 < ../qt-embedded-free-3.0.4.tslib.diff
12 patch -p1 < ../qte-gcc-3.4.3.patch
问题一:
../include/qstring.h:199: error: cannot bind packed field '((QChar*)this)->QChar::ucs' to 'ushort&'
解决办法:qstring.h中
199 // ushort &unicode() { return ucs; }
200 ushort &unicode() { ushort& tmp = ucs; return tmp; }
问题二:
make[3]: /home/zozowit/cross/qt-embedded-free-3.3.4/bin/uic:命令未找到
解决办法:之后经过查找安装相关库支持:
libfreetype6-dev uuid-dev lib.jpeg62-dev libqt3-mt libpam0g-dev libpng12-dev
libbluetooth1-dev libpcsclite-dev pkg-config jpeg-6b
uic编译器(它将qt2-designer创建的UI格式的文件转换成cpp文件),你可以下载QT/X11编译生成uic,也可以从网上下载一个uic。
问题三:
/qt/qtx11/include/qvaluestack.h:57: 错误:不能从 ‘QValueListIterator<QMap<QString, QString> >’ 转换到 ‘const char*’,为实参 ‘1’(属于 ‘int remove(const char*)’)
/qt/qtx11/include/qvaluestack.h: In member function ‘T QValueStack<T>::pop() [with T = QString]’:
成功编译的方法:
问题四:
/usr/bin/ld: skipping incompatible /home/hjcai/qt-arm/qte-arm-tslib/lib/libts.so when searching for -lts
/usr/bin/ld: cannot find –lts
读错误信息发现是编译到src/moc出现上述问题,
于是先:
echo yes |./configure -embedded arm -thread
cd src/moc
make
然后再:
echo yes |./configure -embedded arm –thread –qt-mouse-tslib –I$QTDIR/include –L$QTDIR/lib
make
此法不通,虽然编译通过,但触摸屏不可使
qt-embedded-free-3.0.4版本打上tslib补丁是可用的,转屏虽然./configure中无对应参数,但在运行前
export QWS_DISPLAY='Transformed:Rot90'即可实现转屏
问题五:
更改qt-2.3.2文件夹中src/tools/qvaluestack.h第57行源代码:
remove (this->formLast() );
为:
this->remove (this->formLast() );
问题六:
/arm-target/qt-2.3.7/include/qsortedlist.h:51: error: there are no arguments to `clear' that depend on a template parameter, so a declaration of `clear' must be available
改成this->clear()
然后从/usr/bin下吧uic文件拷到qt的bin下
./configure -prefix /usr/qtopiacore3 -xplatform qws/linux-arm-g++ -thread -embedded arm -depths 16 -no-qvfb -qt-gfx-transformed -nomake examples -qt-mouse-tslib -I/home/zozowit/cross/tslib_build/include -L/home/zozowit/cross/tslib_build/lib