安装开发环境就不多说了,装好Linux虚拟机后。先安装QtX11,主要是可以看Demo和帮助文档,最重要的是可以生成QVFB,不过郁闷的是这个烂东西编译好居然不能自动生成,要自己去文件夹下生成。再安装Qt-Emebedded for X86,这个比较正常,然后就可以在X86下进行编译,在QVFB模拟器上查看。可参考下面的文章:
下面说说编译Qt4.5 Embedded for arm,这个烂东西真TMD的难弄啊,我也是一知半解的。
先安装tslib,否则出现错误,找不到QMAKE_INCDIR,QMAKE_LIBDIR
生成configure,然后运行./configure --prefix=/usr/local/....,指定安装路径
出现找不到 rpl_malloc 注释掉config.h中的 //#define malloc rpl_malloc
安装后修改/home/qt/qt-embedded-linux-opensource-src-4.5.1-arm/mkspecs/common/linux.conf
QMAKE_INCDIR = /usr/local/tslib/include
QMAKE_LIBDIR = /usr/local/tslib/lib
再安装zlib,否则出现错误tools/qbytearray.cpp:55:18: zlib.h: No such file or directory
access/qhttpnetworkconnection.cpp:63:22: zlib.h: No such file or directory
上面的文件在....src/corelib/tools中,修改#include <zlib.h>为#include "/usr/local/zlib/include/zlib.h"
然后又出错了,发现编辑zlib时没用arm-linux-gcc。。。
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make[1]: *** [../../lib/libQtCore.so.4.5.1] 错误 1
make[1]: Leaving directory `/home/qt/qt-embedded-linux-opensource-src-4.5.1-arm/src/corelib'
make: *** [sub-corelib-make_default-ordered] 错误 2
zlib的编译问题,修改MakeFile,用arm-linux-gcc重新编译,COPY zlib库文件到/usr/local/arm/3.4.1/arm-linux/lib/
接下来,还是一堆error。。。总结了一下:
发现除了tslib和zlib还有很多需要编译的库,可查看Qt的./configure -help,下载需要的sys×××库,如jpeg,tiff,png,mng等,有的库编译的时候可能还需要其它的库,再去下载。
install时最好安装到/usr/local文件夹,可以生成Makefile时指定,如./configure --prefix=/usr/local --host=arm-linux --target=arm-linux
这样生成的Makefile是使用arm-linux-gcc编译,当然最好再查看一下Makefile,而且有的库没有--target参数,可根据help查看。
我安装的时候分别指定了文件夹,如/usr/local/jpeg /usr/local/zlib等,后来发现这样不好,否则安装后所有库的头文件和库文件都统一在/usr/local/include和/usr/local/lib中。
头文件Copy到/home/qt/qt-embedded-linux-opensource-src-4.5.1-arm/include
lib文件Copy到/usr/local/arm/3.4.1/arm-linux/lib
这样就可以正常生成QtEmbedded-4.5.1 arm_linux版,而且不用像前面那样更改头文件的包含。
最后生成QtEmbedded-4.5.1 arm_linux版
./configure \
-prefix /usr/local/Trolltech/QtEmbedded-4.5.1-arm \
-release \
-shared \
-no-qt3support \
-no-xmlpatterns \
-no-svg \
-no-webkit \
-system-zlib \
-qt-gif \
-system-libtiff \
-system-libpng \
-qt-libmng \
-system-libjpeg \
-make libs \
-make tools \
-nomake examples \
-nomake docs \
-nomake demo \
-no-nis \
-no-cups \
-no-iconv \
-no-dbus \
-no-openssl \
-xplatform qws/linux-arm-g++ \
-embedded arm \
-little-endian \
-qt-freetype \
-depths all \
-qt-gfx-linuxfb \
-no-gfx-transformed \
-no-gfx-multiscreen \
-no-gfx-vnc \
-no-gfx-qvfb \
-qt-kbd-tty \
-qt-kbd-usb \
-qt-mouse-tslib \
-qt-mouse-pc \
-no-glib
make && make install