QT4.8.6移植到TQ2440

来源:互联网 发布:微信红包牛牛源码教程 编辑:程序博客网 时间:2024/05/06 13:03
交叉编译器用的是arm-linux-gcc4.3.2。
1.安装依赖:sudo apt-get install libX11-dev libXext-dev libXtst-dev
2.下载:qt-everywhere-opensource-src-4.8.6.tar.gz,网址:http://download.qt.io/archive/qt/
3.解压:tar zxf qt-everywhere-opensource-src-4.8.6.tar.gz
4.配置:编写auto_config.sh脚本,内容如下:
#!/bin/sh
./configure \
-prefix /home/yuntaohe/work/TQ210/QT4.8.6 \
-opensource \
-confirm-license \
-release -shared \
-embedded arm \
-xplatform qws/linux-arm-g++ \
-depths 16,18,24,32 \
-fast \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-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-3dnow \
-no-openssl \
-no-webkit \
-no-qvfb \
-no-phonon \
-no-nis \
-no-opengl \
-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/home/yuntaohe/work/TQ2440/tslib/tmp/include \
-L/home/yuntaohe/work/TQ2440/tslib/tmp/lib

增加脚本的可执行权限,chmod +x auto_config.sh,进入qt目录,执行脚本:
cd qt-everywhere-opensource-src-4.8.6/
./auto_config.sh,报错:
make: g++: Command not found,解决方法:apt-get install build-essential
5.编译:make -j8,编译一段时间后报错:
undefined reference to `__sync_sub_and_fetch_4'
collect2: ld returned 1 exit status
make[1]: *** [../../lib/libQtScript.so.4.8.6] Error 1
make[1]: Leaving directory `/home/yuntaohe/work/TQ210/qt-everywhere-opensource-src-4.8.6/src/script'
make: *** [sub-script-make_default-ordered] Error 2

解决方法:下载gcc-4.4.3源码,解压后,在gcc/config/arm目录下存在linux-atomic.c,将其编译为库文件。
cd gcc/config/arm
libtool --tag=CC --mode=compile arm-linux-gcc -g -O2 -MT linux-atomic.lo -MD -MP -MF linux-atomic.Tpo -c -o linux-atomic.lo linux-atomic.c
libtool --tag=CC --mode=link arm-linux-g++ -g -O2 -o liblinux-atomic.la linux-atomic.lo

libtool工具如果不存在,安装即可:sudo apt-get install libtool
完成后,会在gcc/config/arm目录下生成.libs目录,拷贝liblinux-atomic.a至临时目录:cp .libs/liblinux-atomic.a /home/yuntaohe/work/TQ210,修改QT的src/script/Makefile,在19行的LIBS = $(SUBLIBS)结尾加上-L/home/yuntaohe/work/TQ210 -llinux-atomic,保存,继续make即可。
6.安装:make install,完成后会在安装目录/home/yuntaohe/work/TQ210/QT4.8.6下生成如下目录:
bin  demos  examples  imports  include  lib  mkspecs  plugins  translations。
将lib和plugins目录复制到开发板的文件系统:cp lib/* rootfs/lib -rf -d,cp plugins rootfs -rf
7.设置环境变量**:vim ~/.bashrc,在文件尾加上环境变量路径,保存后执行source~/.bashrc
export QTDIR=/home/yuntaohe/work/TQ210/QT4.8.6
export LD_LIBRARY_PATH=/home/yuntaohe/work/TQ210/QT4.8.6/lib
export PATH=$QTDIR/bin:$PATH

8.程序验证:vim main.cpp,输入如下代码:
#include <QApplication>
#include <QDebug>

int main(int argc,char *argv[])
{
    qDebug("Hello, welcome to Qt world!");
    return 0;
}


依次执行qmake -project -o main.pro , qmake, make生成应用程序main。将main可执行程序拷贝开发板文件系统,在开发板的/etc/profile设置环境变量。
#export QWS_MOUSE_PROTO=Tslib:/dev/event0
#export QWS_MOUSE_PROTO=MouseMan:/dev/mice
export QWS_MOUSE_PROTO="Tslib:/dev/event0 intelliMouse:/dev/mice"
export QT_QWS_FONTDIR=/lib/fonts                                 
export POINTERCAL_FILE=/etc/pointercal
export QWS_SIZE=480x272

重启开发板,执行应用程序:./main,输出Hello, welcome to Qt world!
让QT支持触摸屏,设置环境变量export QWS_MOUSE_PROTO=Tslib:/dev/event0
让QT支持USB鼠标,设置环境变量export QWS_MOUSE_PROTO=MouseMan:/dev/mice
让QT同时支持触摸屏和USB鼠标,设置环境变量export QWS_MOUSE_PROTO="Tslib:/dev/event0 intelliMouse:/dev/mice"
在使用触摸屏和USB鼠标前,需要配置内核支持触摸屏和USB鼠标,配置内核对触摸屏的支持,在移植tslib1.4时已经提到,配置内核支持USB鼠标方法如下:
make menuconfig
Device Drivers  --->
    [*] HID Devices  --->
        <*>   USB Human Interface Device (full HID) support
QT程序在启动时,会出现鼠标,如果想让鼠标不显示,有3种解决方法:
1.在运行程序时,加上-nomouse选项,但是会导致触摸屏失效,无法使用。
2.在实例化QApplication对象后,调用QWSServer::setCursorVisible(false);调用之前需要包含头文件#include <QWSServer>。这种方法有个缺点,就是程序一开始,屏幕的中间会出现一个绿色的小方块,然后再出现一个白色的鼠标,之后小方块和鼠标都会消失,从鼠标出现到消失,时间在1秒左右,导致不美观。
3.在编译QT之前,配置QT时,加上-no-feature-CURSOR选项即可,这样程序在启动时,不会出现绿色的小方块,也不会出现鼠标,而且触摸屏也可以正常使用。

如果QT中要显示图片或者动画,需要在程序的一开始指定QT的plugins目录所在的路径,即QApplication::addLibraryPath("/plugins");在plugins目录下面的imageformats目录,存放有QT对图像的解码库。
在QTCreator中开发QT程序配置如下:
1.切换到Qt Versions页,点击Add,选择qmake路径,这里是/home/yuntaohe/work/TQ210/QT4.8.6/qmake,选择完后,Version name会自动填充,这里是Qt %{Qt:Version} (QT4.8.6),点击Apply保存。
2.切换到Compilers页,点击Add,选择GCC,Name栏填入编译器名称GCC(ARM),再点击Brouse选择编译器路径,这里是/home/yuntaohe/work/TQ2440/arm-linux-gcc/4.3.2/bin/arm-linux-g++,点击Apply保存。
3.Tools->Options,左侧选择Build & Run,切换到Kits页面,点击Add,在下面的Name栏输入名称TQ2440 Qt 4.8.6(qte-arm),Compiler栏选择GCC(ARM),QT version栏选择QT 4.8.6(QT4.8.6),点击Apply保存。
0 0
原创粉丝点击