MyException - 我的异常网
当前位置:我的异常网» 综合 » 移栽qt5.3.1到arm

移栽qt5.3.1到arm

www.MyException.Cn  网友分享于:2014-08-05  浏览:0次
移植qt5.3.1到arm

最近刚入手一款开发板(比较低端,刚毕业工作还没一个月,穷屌丝一个)。在学校以前都是用的是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比较为客户着想,其将窗体边框去了,而且屏幕上没有鼠标的光标了,更加想提供给触摸屏是使用。



第二张图是点击的,其获得了焦点。





文章评论

写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员和编码员之间的区别
程序员和编码员之间的区别
我是如何打败拖延症的
我是如何打败拖延症的
程序员必看的十大电影
程序员必看的十大电影
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
如何成为一名黑客
如何成为一名黑客
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
总结2014中国互联网十大段子
总结2014中国互联网十大段子
旅行,写作,编程
旅行,写作,编程
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
 程序员的样子
程序员的样子
中美印日四国程序员比较
中美印日四国程序员比较
那些争议最大的编程观点
那些争议最大的编程观点
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
漫画:程序员的工作
漫画:程序员的工作
程序员都该阅读的书
程序员都该阅读的书
程序员应该关注的一些事儿
程序员应该关注的一些事儿
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
我的丈夫是个程序员
我的丈夫是个程序员
老程序员的下场
老程序员的下场
每天工作4小时的程序员
每天工作4小时的程序员
编程语言是女人
编程语言是女人
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Java程序员必看电影
Java程序员必看电影
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
一个程序员的时间管理
一个程序员的时间管理
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员的鄙视链
程序员的鄙视链
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
为什么程序员都是夜猫子
为什么程序员都是夜猫子
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
10个调试和排错的小建议
10个调试和排错的小建议
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有