QT移植到ARM

ARM 124浏览

继上一篇在Linux中编译安装好QT后,这里介绍如何通过交叉编译QT库移植到ARM中。

1 Qt库的交叉编译和移植

源代码仍然使用上篇博客里面下载的qt-everywhere-opensource-src-4.8.6.tar.gz,之前已经解压过了,直接进入目录。

# cd qt-everywhere-opensource-src-4.8.6

下面进行配置,生成Makefile文件,然后编译安装。这里由于是编译生成ARM下的库,所以需要修改配置参数,在终端中输入

# ./configure -prefix /opt/qt-4.8.6-arm-embedded arm-release -shared -fast -no-largefile -qt-sql-sqlite -qt3support -no-xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg-webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -nomake examples -nomake docs -nomake demo -no-nis -no-cups -iconv -no-dbus -openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths16,24,32 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-qvfb-armfpa -no-mouse-qvfb -qt-mouse-linuxtp -DQT_QLOCALE_USES_FCVT
# make
# sudo make install

这里configure的配置不是固定的,可以根据自己的需要进行筛选。

安装好后,将qt-4.8.6-arm下面的imports,lib,mkspecs,plugin文件夹拷贝到开发板的目录下。

(这里的目录可以随意选取,只要和环境变量中设置的相同就行了,我是拷贝到了/opt/Qt目录下面)。

下面配置开发板的环境变量

exportset QTDIR=/opt/Qt

exportset QPEDIR=/opt/Qt

exportset LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH

exportset QT_QWS_FONTDIR=$QTDIR/lib/fonts/

exportset QWS_SIZE=800x480

exportset QWS_DISPLAY="LinuxFb:mmWidth80:mmHeight120:0"

exportset QWS_DISPLAY="LinuxFB:/dev/fb0"

exportset QT_PLUGIN_PATH=$QTDIR/plugins/

exportset QWS_KEYBOARD="TTY:/dev/tty1"

exportset QWS_MOUSE_PROTO="TSLIB:/dev/event4"

export PATH=$QTDIR/bin:$PATH

2 Qt Creator中的配置

在电脑上打开qtcreator,在Tools->Options中,Build & Run 选项卡,在Qt Version中添加arm版本的qmake(位于路径 /opt/qt-4.8.6-arm/bin/qmake),在Compilers中添加交叉编译器的路径(我电脑上是位于 /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++ ),在Kits中添加Arm套件,选择Device
type为Generic Linux Device,选择Compiler为Gcc(arm)(这是在Compilers选项卡中自己给交叉编译器起的名字),选择Qt Versi为Qt4.8.6(qt-4.8.6-arm),Debugger就用默认的选项(System GDB at /usr/bin/gdb),点击Apply,确认。

到此,QT的移植过程就结束了,在QT工程中,可以点击qtcreator左侧的Project选项,在Build & Run 里面点击 Add Kit,添加Arm套件,这便是我们上面配置好的用于交叉编译arm下程序的套件,我们选择使用Arm套件对工程进行编译,注意这里在编译工程的时候不能Run,会报错:

Cannot deploy: No device configuration set.

这是因为程序时用于arm里面运行的,不能再电脑上面直接Run,而是改为点击那个小锤子图标(Build Project)就行了。

如果没有报错的话,说明程序编译成功,在对应目录下面会生成可执行文件,将该可执行文件拷贝到开发板中便可以运行了。

注意在终端运行程序的时候要记得加上参数 -qws,示例: “./helloworld -qws”,这是让程序以服务器的形式运行,具体原因不清楚。。。