您的位置:首页 > 编程语言 > Qt开发

移植qt5.3.1到arm

2014-08-04 20:24 447 查看
最近刚入手一款开发板(比较低端,刚毕业工作还没一个月,穷屌丝一个)。在学校以前都是用的是Friendly Arm的6410,使用的qt版本是使用的最多的4.7.0版本,入手的板子是4.7.4。qt5出来也有好长的时间了,其中提供了很多的特性,所以这次移植的是qt5的最新版本5.3.1。

第一步准备好源码包,这里需要qt的源码包,和tslib包,tslib我使用的是开发板提供的包。

设置交叉编译环境,我使用的是friendly arm的交叉工具。将其加到PATH中。



然后看看是不是已经安装成功。

编译tslib,相关的资料可以找资料,这边就不再赘述了。

我把qt源码包解压到~/software文件夹下,重命名为qte-5.3.1。我们是在arm板上移植,需要知道芯片的架构。我的是arm9,其架构是armv5te。我们进入/home/zhou/software/qte-5.3.1/qtbase/mkspecs/linux-arm-gnueabi-g++目录下,需要修改qmake.conf文件。如下

#

# qmake configuration for building with arm-linux-gnueabi-g++

#

MAKEFILE_GENERATOR      = UNIX

CONFIG                 += incremental

QMAKE_INCREMENTAL_STYLE = sublib

//添加的内容

QT_QPA_DEFAULT_PLATFORM = linuxfb

QMAKE_CFLAGS_RELEASE   +=-O2 -march=armv5te

QMAKE_CXXFLAGS_RELEASE +=-O2 -march=armv5te

include(../common/linux.conf)

include(../common/gcc-base-unix.conf)

include(../common/g++-unix.conf)

//添加的内容

QMAKE_INCDIR += /home/zhou/software/tslib1.4-icool2416-v1.0/_install/usr/include  

QMAKE_LIBDIR += /home/zhou/software/tslib1.4-icool2416-v1.0/_install/usr/lib

# modifications to g++.conf

QMAKE_CC                = arm-linux-gcc//这边需要根据你安装来设计,我的是arm-linux-xx

QMAKE_CXX               = arm-linux-g++

QMAKE_LINK              = arm-linux-g++

QMAKE_LINK_SHLIB        = arm-linux-g++

# modifications to linux.conf

QMAKE_AR                = arm-linux-ar cqs

QMAKE_OBJCOPY           = arm-linux-objcopy

QMAKE_NM                = arm-linux-nm -P

QMAKE_STRIP             = arm-linux-strip

load(qt_config)

板子比较低端,只能使用framebuffer,如果支持opengl es,可以使用eglfs。qt5将显示都做成了插件形式,这提供了更多的灵活性,详细的内容可以去看qt5的文档。

我编译使用的脚本

#!/bin/sh

echo 'build Qt5 for embedded linux Author Zhou Xiang'

mkdir _install

$PWD/configure -v \

               -prefix $PWD/_install \

               -release \

               -make libs \

               -xplatform linux-arm-gnueabi-g++ \

               -optimized-qmake \

               -pch \

               -qt-sql-sqlite \

               -qt-libjpeg \

               -qt-zlib \

               -no-opengl \

               -no-sse2 \

               -no-openssl \

               -no-nis \

               -no-cups \

               -no-glib \

               -no-xcursor -no-xfixes -no-xrandr -no-xrender \

               -no-separate-debug-info \

               -nomake examples -nomake tools

make && make install

你可以详细的根据自己的需要配置,其实大部分的配置我都没看过。在qte-5.3.1文件夹下运行这个脚本就行。

然后将_install文件夹下的lib,plugin和include拷贝到你想放置的地方,我放置在opt/qte-5.3.1下。tslib生成usr文件夹,我直接拷贝到arm板的根目录下。对/etc/profile进行配置,如下

export TSLIB_ROOT=/usr

export QT_ROOT=/opt/qte-5.3.1

export TSLIB_TSDEVICE=/dev/touchscreen

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONFFILE=/usr/etc/ts.conf

export TSLIB_PLUGINDIR=/usr/lib/ts

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

export QWS_MOUSE_PROTO=tslib:/dev/touchscreen

export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib:$LD_LIBARAY_PATH

export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins

export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0

export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts

export LD_PRELOAD=/usr/lib/preloadable_libiconv.so:$TSLIB_ROOT/lib/libts.so

export QT_QPA_GENERIC_PLUGINS=tslib

配置ts.conf,如果像我这样,其在/usr/ect目录下

module_raw input

module pthres pmin=1

module variance delta=30

module dejitter delta=100

module linear

这样我们就配置好了。

下面就是交叉编译我们的项目,其实很简单,就是用qte-5.3.1/_install/bin/qmake一下,然后直接make就ok了。

一开试我运行程序./talkroom -platform linuxfb -plugin tslib总是报

Couldnt load module pthres                                                      

Error configuring                                                               

: No such file or directory

想了各种办法,然后发现,是libts.so没有加载,然后在LD_PRELOAD添加了

export LD_PRELOAD=/usr/lib/preloadable_libiconv.so:$TSLIB_ROOT/lib/libts.so,正常了。

qt5.3.1比较为客户着想,其将窗体边框去了,而且屏幕上没有鼠标的光标了,更加想提供给触摸屏是使用。





第二张图是点击的,其获得了焦点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: