我PC上的系统是Fedora 17,32位的。它自带了Qt,版本是4.8.4,因此嵌入式Qt我也选择相同的版本。
从官网下载qt-everywhere-opensource-src-4.8.4.tar.gz。解压该文件:
tar zxvf qt-everywhere-opensource-src-4.8.4.tar.gz
进入该解压后的目录:
cd qt-everywhere-opensource-src-4.8.4
为了方便更改配置,可以编写一个名为autoconfig.sh的自动配置文件,内容为:
#!/bin/sh
./configure \
-v \
-opensource \
-confirm-license \
-release -shared \
-embedded arm \
-xplatform qws/linux-arm-g++ \
-depths 16,18,24,32 \
-fast \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-no-sql-db2 -no-sql-ibase -no-sql-mysql-no-sql-psql -no-sql-odbc -no-sql-oci \
-no-sql-tds -no-sql-sqlite2 \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-little-endian -host-little-endian \
-no-qt3support \
-no-libtiff -no-libmng \
-no-opengl \
-no-mmx -no-sse -no-sse2 \
-no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2-no-avx -no-neon \
-no-dbus -no-icu -no-multimedia \
-no-3dnow \
-no-openssl \
-no-webkit \
-no-qvfb \
-no-phonon \
-no-nis \
-no-cups \
-no-glib \
-no-xcursor -no-xfixes -no-xrandr-no-xrender \
-no-separate-debug-info \
-nomake examples -nomake tools -nomake docs\
-qt-mouse-tslib \
-I/usr/local/tslib/include \
-L/usr/local/tslib/lib
exit
其中的-I和-L分别是tslib在根文件系统中include和lib的路径。运行该文件:
./autoconfig.sh
然后编译:
gmake
最后以root身份安装:
gmake install
由于我没有定义安装目录,因此系统自动把文件安装到了默认目录/usr/local/Trolltech/QtEmbedded-4.8.4-arm/下。
下面就是开发板的配置,把/usr/local/Trolltech/QtEmbedded-4.8.4-arm/lib目录下的所有文件复制到根文件系统的lib下。再设置开发板的环境变量,在根文件系统的profile文件中添加下列语句:
export QWS_MOUSE_PROTO=Tslib:/dev/event0
export QT_QWS_FONTDIR=/lib/fonts
export POINTERCAL_FILE=/temp/pointercal
export QWS_SIZE=320x240
第一行表示触摸屏的设备节点,第二行表示QT的字库目录,第三行表示的是Tslib的触摸屏校正文件的目录,第四行表示LCD屏的尺寸。
通过以上步骤,开发板就可以运行Qt文件了。我们测试一下,可以用gedit编写一段Qt程序:
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello QT!");
label->show();
return app.exec();
}
把它保存为hello.cpp文件,这里要保证该文件所在的目录内只有一个cpp文件(以后复杂的程序可以用Qt Creator来编写编译)。进入该目录,运行下列语句:
/usr/local/Trolltech/QtEmbedded-4.8.4-arm/bin/qmake–project
/usr/local/Trolltech/QtEmbedded-4.8.4-arm/bin/qmake
make
将生成的可执行文件复制到开发板上运行,记得要用-qws参数,另外一定要保证tmp目录是可写的。
Qt的编译说起来是很简单的,如果不出现问题,一切都很顺利。但我在编译Qt的时候就出现了不少问题。首先我的arm-linux-gcc的版本是4.2.2,在configure配置Qt的时候,无法配置成功,这样我就把arm-linux-gcc的版本换成了4.4.3,但在configure配置Qt的时候,会提示qmake是无法执行的二进制文件。这个问题困惑了我好长时间,我通过下面办法得到了解决,由于我的PC系统已默认安装了基于PC的QT,它是在/usr/bin目录下名称为qmake-qt4,我把该文件软连接为qmake文件:
ln –s qmake-qt4 qmake
然后在用户目录下,在.bashrc文件内添加下列内容:
export QTDIR=/usr
export PATH=$PATH:$QTDIR/bin
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
通过上面的步骤最终Qt配置、编译、安装成功了。因为Qt用的是gcc版本更换了,那么根文件系统也要用该版本进行编译,否则应用程序因为库文件不匹配而无法运行。