qt5.5.0成功移植到IMX6中

前阵子移植qt4.8.5到板子上成功后,总想着qt4有点旧,因而就想着玩qt5,以前都是在Windows7上写qt,
写了个游戏,感受还不错,但毕竟不能只能在PC机上跑,如今因为项目须要,要将qt搞到IMX6板子上,其
中过程也不复杂,就是编译qt太耗时间,因为个人机器比较慢,编译一个qt要两个半钟,你们的可能快些
要移植qt5.5.0到板子上,首先得准备几样东西
虚拟机VMware-workstation-full-12.1.0-3272444 我用的是这个
fedora镜像:Fedora-Live-Workstation-i686-21-5.iso 有些人喜欢用ubuntu的也能够
官网能够下qt: qt-everywhere-opensource-src-5.4.0.tar.gz和qt-opensource-linux-x86-5.5.0.run
交叉编译器:gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gzhtml

虚拟机的安装和fedora21的安装就不说了,通常都是一路畅通的,安装好后调通网络,我喜欢用桥接方式桥接到
windows7的无线网卡,这样方便安装软件和遇到问题时安装一些库,用yum -y install xxx就能够安装,这里不展开。
但在后期调试开发板的时候记得要桥接到有线网卡,才能和板子ping的通。linux


一、交叉编译器的安装
这个网上不少教程,再也不赘述。
二、qt的编译
先mkdir /opt/qt5.5.0 用于后续安装qt
将qt解压后,执行cd qt-everywhere-opensource-src-5.5.0/
执行vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
在qmake.conf文件中添加
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
而且在编译器名字arm后面添加none,下面是我修改后的,本身对照下
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublibc++

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)canvas

#下面三行是我添加的
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-aubuntu

# modifications to g++.conf
#下面八个都加上none
QMAKE_CC = arm-none-linux-gnueabi-gcc
QMAKE_CXX = arm-none-linux-gnueabi-g++
QMAKE_LINK = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-g++windows

# modifications to linux.conf
QMAKE_AR = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy
QMAKE_NM = arm-none-linux-gnueabi-nm -P
QMAKE_STRIP = arm-none-linux-gnueabi-strip
load(qt_config)
其实你用gedit也行,可能方便点。
而后vi qt.pro
将下面两行注释掉
#addModule(qt3d, qtdeclarative qtimageformats)
#addModule(qtcanvas3d, qtdeclarative)
咱们不用3d网络

而后执行./configure -release -opensource -xplatform linux-arm-gnueabi-g++ -prefix /opt/qt5.5.0 -no-c++11 -no-opengl -dbus -no-iconv
注意要加上-no-iconv 和 -dbus 否则后续不少问题,其实也能够解决,就是比较麻烦,后面的参数你们能够用./configure -help
查看,上面注释掉的两行理论上也能够用参数来屏蔽掉才对,懒得找了。
配置成功后就执行make 等两个钟吧,这里以前必定要配置好参数,我就是有些没加上而后make了一个多钟
而后报错,白等了一个多钟。make完成功后执行最后一步make install ,这个很快,几分钟的事情。app

下面就要开始调试了
先将刚安装好的qt5.5.0打包
cd /opt/
tar czvf qt5.5.0.tar.gz qt5.5.0
而后就将压缩包拷到U盘,放到板子上解压到/opt下,也能够用tftp下载,前提是要配好网络
将qt5.5.0.tar.gz放到/var/lib/tftpboot下,开发板配好ip,用ifconfig eth0 172.19.19.230 netmask 255.255.254.0能够
配开发板ip,个人fedora的ip是172.19.19.250,注意桥接到有线网卡,而且有线网卡配置好同网段的ip,开发板用
网线链接好笔记本。互相能ping通后执行tftp -g -r qt5.5.0.tar.gz 172.19.19.250
下载成功后一样解压到/opt下,之后写qt程序常常须要调试,因此之后会极少用U盘,想一想每编译一次就要用U盘拷到板子上,一天
要拔来拔去几百回。因此用网络下载是比较好的,但我的仍是喜欢用nfs挂载,nfs挂载方式这里就不说了,本身去学,不难。测试

解压好后就把变量导一下,在板子上vi /etc/profile
在后面添加
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_TSEVENTTYPE=input
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export QWS_MOUSE_PROTO=tslib:/dev/input/event1
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$LD_LIBRARY_PATHui

export PATH=$TSLIB_ROOT/bin:$PATH

export QT_ROOT=/opt/qt5.5.0
export LD_LIBRARY_PATH=$QT_ROOT/lib:$LD_LIBRARY_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 QT_QPA_GENERIC_PLUGINS=tslib
结束。
TSLIB本身想办法获得吧,我这里板子上有现成的,我就直接拿来用了。路径要配对
不过我试了下,qt5不用tslib库也能够跑起来,qt4就不行。
测试下:cd /opt/qt5.5.0/examples/touch/fingerpaint/
./fingerpaint

结果报错:
process 1053: D-Bus library appears to be incorrectly set up; failed to read machine uuid: Failed to open "/etc/machine-id": No such file or directory
See the manual page for dbus-uuidgen to correct this issue.
D-Bus not built with -rdynamic so unable to print a backtrace
Aborted

没事,执行 dbus-uuidgen > /etc/machine-id从新来一次,成功了。。。若是遇到其余什么错误,能够参考http://www.cnblogs.com/subo_peng/p/5577716.htmlqt-opensource-linux-x86-5.5.0.run就本身装了。。

相关文章
相关标签/搜索