有时,我们需要在嵌入式系统中实现GUI,来满足特定嵌入式场景的人机交互需求,比如汽车影音系统、智能医疗终端、可视化无人机遥控等。Qt是一套C++扩展库,为嵌入式和图形显示都做出了很多优秀的改进和提升。这一篇来看看把Qt搞到ARM平台开发板中的步骤和注意事项,以备不时之需。
废话少说,第一步,自行百度(推荐google,但要先访问外国网站)下载Qt源码到Ubuntu中:(或者找林老师直接索取,QQ2437231462)
qt-everywhere-opensource-src-5.5.0.tar.gz
第二步,在编译主机Ubuntu中下载expat和dbus源码,交叉编译它们。expat是一款比较好用的XML解析器实现,dbus为Qt提供了进程间交互的功能基础。它们的样子长这个样:
expat-2.1.0.tar.gz dbus-1.8.0.tar.gz
同样,自行百度或google下载到Ubuntu中(或者找林老师直接索取,QQ2437231462)。要注意的一点是,要先安装expat,然后在装dbus,然后再到Qt。
第三步,安装编译环境必要组件,一条命令搞定:
sudo apt-get install build-essential
第四步,解压expat,并在其源代码顶层目录下编写一个配置脚本x.sh如下:
#!/bin/bash
export INSTALLDIR=/usr/local/arm/expat-2.1
sudo mkdir -p $INSTALLDIR
sudo chmod 777 $INSTALLDIR -R
./configure \
--prefix=$INSTALLDIR \
--host=arm-none-linux-gnueabi
修改x.sh的权限,配置、编译并安装三部曲:
chmod 777 x.sh; ./x.sh make make install
第五步,解压dbus,并在其源代码顶层目录下也编写一个配置脚本x.sh如下:
#!/bin/bash
export INSTALLDIR=/usr/local/arm/dbus-1.8
export PATH=$INSTALLDIR/bin:$PATH
export TARGETMACH=arm-none-linux-gnueabi
export BUILDMACH=i686-pc-linux-gnu
export CROSS=arm-none-linux-gnueabi
export CC=${CROSS}-gcc
export LD=${CROSS}-ld
export AS=${CROSS}-as
export CXX=${CROSS}-g++
sudo mkdir -p $INSTALLDIR
sudo chmod 777 $INSTALLDIR -R
./configure \
--prefix=$INSTALLDIR \
--host=$TARGETMACH \
--enable-abstract-sockets \
--enable-tests=no \
CFLAGS=-I/usr/local/arm/expat-2.1/include \
LDFLAGS=-L/usr/local/arm/expat-2.1/lib
跟expat一样,修改x.sh的权限,配置、编译并安装三部曲:
chmod 777 x.sh; ./x.sh make make install
最后进入qt源码顶层目录,为了方便维护,同样也编写一个x.sh,内容如下:
#!/bin/bash
export INSTALLDIR=/usr/local/arm/qt-5.5
sudo mkdir -p $INSTALLDIR
sudo chmod 777 $INSTALLDIR
./configure -v \ --prefix=$INSTALLDIR \ -release \ -make libs \ -xplatform linux-arm-gnueabi-g++ \ -optimized-qmake \ -pch \ -qt-sql-sqlite \ -qt-libjpeg \ -qt-zlib \ -qt-freetype \ -no-sse2 \ -no-opengl \ -no-openssl \ -no-nis \ -no-cups \ -no-glib \ -no-iconv \ -no-xcursor \ -no-xfixes \ -no-xrandr \ -no-xrender \ -no-separate-debug-info \ -nomake tools \ -nomake examples \ -dbus \ -I /usr/local/arm/dbus-1.8/include \ -L /usr/local/arm/dbus-1.8/lib
以上配置脚本如果你不想自己写,可以找林老师直接索取,QQ2437231462。但我会鄙视你,因为你最好自己写一遍,才能记得住才能去体会里面的命令的意思,不然都是浑沦吞枣。接下来,你就可以编译qt了:
chmod 777 x.sh; ./x.sh make -j 4 make install
有几个重点提前剧透一下,make的编译时间视乎你的电脑性能而定,首次编译大概需要40-60分钟,后续编译就三两分钟。但是如果你把顶层Makefile删除,那么编译时间将会跟首次一样。
将上述编译好的文件(即/usr/local/arm/下的相关文件,尤其是库文件)放到开发板中,即可将交叉编译好的Qt程序放到开发板运行了。