Qt5.4.1移植到arm——Linuxfb篇
Qt5与Qt4对比有很大的改变,其最大的特性在于模块化,并且很明显的是不再见到Qt4用到的qws,Qt5新增了QPA系统,基于QPA使得Qt5移 植到一个新平台非常简单而又具有极强的底层扩展能力;同时,C++11 也获得全面支持,使用 C++11 新特性更为方便。下面讲述将Qt5.4.1移植到MYD-AM335X的步骤:
1、编译并安装tslib1.4。这部分按照“MYD-AM335X Linux 3.2.0 用户手册”第1.10.2章节的步骤即可,最终将安装到/usr/local/tslib中。
2、到https://download.qt.io/archive/qt/5.4/5.4.1/single/下载源码包qt-everywhere-opensource-src-5.4.1.tar.gz
3、解压:
|
1
2
|
$ tar xzf qt-everywhere-opensource-src-5.4.1.tar.gz$ cd qt-everywhere-opensource-src-5.4.1/ |
4、指定所用平台的arm架构以及交叉编译器:
|
1
|
$ vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf |
改成以下内容,实际应需要根据自己的开发环境作出相应改变:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
## qmake configuration for building with arm-linux-gnueabi-g++#MAKEFILE_GENERATOR = UNIXCONFIG += incrementalQMAKE_INCREMENTAL_STYLE = sublibQT_QPA_DEFAULT_PLATFORM = linuxfbQMAKE_CFLAGS_RELEASE += -O2 -march=armv7-aQMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-ainclude(../common/linux.conf)include(../common/gcc-base-unix.conf)include(../common/g++-unix.conf)QMAKE_INCDIR += /usr/local/tslib/includeQMAKE_LIBDIR += /usr/local/tslib/lib# modifications to g++.confQMAKE_CC = arm-linux-gnueabihf-gcc -ltsQMAKE_CXX = arm-linux-gnueabihf-g++ -ltsQMAKE_LINK = arm-linux-gnueabihf-g++ -ltsQMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++ -lts# modifications to linux.confQMAKE_AR = arm-linux-gnueabihf-ar cqsQMAKE_OBJCOPY = arm-linux-gnueabihf-objcopyQMAKE_NM = arm-linux-gnueabihf-nm -PQMAKE_STRIP = arm-linux-gnueabihf-stripload(qt_config) |
5、根据自己的实际需求配置Qt:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
$ ./configure \ -prefix /usr/local/qt5.4.1 \ -confirm-license \ -opensource \ -release \ -make libs \ -xplatform linux-arm-gnueabi-g++ \ -optimized-qmake \ -pch \ -qt-sql-sqlite \ -qt-libjpeg \ -qt-libpng \ -qt-zlib \ -tslib \ -no-opengl \ -no-sse2 \ -no-openssl \ -no-nis \ -no-cups \ -no-glib \ -no-dbus \ -no-xcb \ -no-xcursor -no-xfixes -no-xrandr -no-xrender \ -no-separate-debug-info \ -make examples -nomake tools -nomake tests -no-iconv |
6、编译安装:
|
1
2
|
$ make$ sudo make install |
7、移植Qt到开发板:
完成上述步骤后,qt5.4.1将被安装到/usr/local/qt5.4.1中。然后将/usr/local/中的qt5.4.1复制到开发板的/opt/目录中,将/usr/local/中的tslib复制到开发板的/usr/local/中。
8、设置开发板Qt环境变量:
|
1
|
root@MYD-AM335X:~# vi /etc/init.d/qt.sh |
添加下面内容:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
export TSLIB_CONSOLEDEVICE=noneexport TSLIB_FBDEVICE=/dev/fb0export TSLIB_TSDEVICE=/dev/input/event1export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.confexport TSLIB_PLUGINDIR=/usr/local/tslib/lib/tsexport TSLIB_CALIBFILE=/etc/pointercalexport LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/tslib/lib:/opt/qt5.4.1/libexport PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/tslib/binexport QT_QPA_PLATFORM_PLUGIN_PATH=/opt/qt5.4.1/pluginsexport QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0export QT_QPA_FONTDIR=/opt/qt5.4.1/lib/fontsexport QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE |
保存退出后使上面的环境变量生效:
|
1
|
root@MYD-AM335X:~# source /etc/init.d/qt.sh |
9、运行一些example:
|
1
|
root@MYD-AM335x ~# /opt/qt5.4.1/examples/touch/pinchzoom/pinchzoom |

|
1
|
root@MYD-AM335x ~# /opt/qt5.4.1/examples/svg/embedded/fluidlauncher/fluidlauncher |

我们可以看到用linuxfb方式的运行的QT是没有窗体边框的,这是qt5的一个特点,似乎是其为了更好的转移到手机等移动终端。
./configure -prefix /opt/EmbedSky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/qt-5.2.1-embedded-arm-MuliTCS -xplatform linux-arm-fr
eescale-gnueabi-g++ -confirm-license -opensource -release -make libs -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-libpng -qt-zlib -tslib -no-sse
2 -no-openssl -no-nis -no-cups -no-glib -no-separate-debug-info -nomake examples -nomake tools -nomake tests -no-iconv -skip webkit -opengl es2 -verbos
e -no-xcb-xlib -qt-xcb -qpa xcb
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental gdb_dwarf_index xlib
QMAKE_INCREMENTAL_STYLE = sublib
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a -mfloat-abi=softfp -mfpu=neon
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = arm-fsl-linux-gnueabi-gcc
QMAKE_CXX = arm-fsl-linux-gnueabi-g++
QMAKE_LINK = arm-fsl-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-fsl-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = arm-fsl-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-fsl-linux-gnueabi-objcopy
QMAKE_NM = arm-fsl-linux-gnueabi-nm -P
QMAKE_STRIP = arm-fsl-linux-gnueabi-strip
load(qt_config)
#QMAKE_INCDIR += /opt/EmbedSky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/include
#QMAKE_INCDIR += /opt/EmbedSky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/libX11/include
#QMAKE_LIBDIR += /opt/EmbedSky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/lib
#QMAKE_LIBDIR += /opt/EmbedSky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/qt-5.2.1-embedded-arm-MuliTCS/lib
#QMAKE_LIBDIR += /opt/EmbedSky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/libX11/lib
#QMAKE_LIBS+=-lXau -lxcb -lX11 -lX11-xcb
#QMAKE_INCDIR_OPENGL_ES2=/opt/EmbedSky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/include
#QMAKE_LIBDIR_OPENGL_ES2=/opt/EmbedSky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/lib
#QMAKE_LIBS_OPENGL_ES2=-lglapi -lGLESv2 -lEGL
Qt5.4.1移植到arm——Linuxfb篇的更多相关文章
- 超详细Qt5.9.5移植攻略
本文就来介绍下如何将Qt5.9.5移植到ARM开发板上. 以imx6开发板为例,使用Ubuntu14.04虚拟机作为移植环境. 准备工作 1.主机环境:Ubuntu14.04: 开发板:启扬IAC-I ...
- 将SQLite移植到ARM板上 (转)
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它, 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够 ...
- 怎样将lua移植到arm平台的linux内核
将脚本移植到内核是一件非常酷的事情,lua已经被移植到NetBSD的内核中,也有一个叫lunatik的项目把lua移植到了linux内核.仅仅可惜仅仅支持x86.不支持arm,在网上搜索了下,没有找到 ...
- iTOP-IMX6UL 实战项目:ssh 服务器移植到 arm 开发板
实验环境:迅为提供的Ubuntu12.04.2 以及虚拟机 编译器:arm-2009q3 编译器 开发板系统:QT系统 开发板使用手册中给Windows 系统安装了 ssh 客户端,给 Ubunt ...
- SQL数据库移植到ARM板步骤
SQL作为一种存储数据的数据结构,具有体积小(能堵存储的数据多),容易移植等优点.例如,在Ubuntu或者ARM开发板上被大量应用.下面就简单说一下SQL移植到ARM板的步骤. 下载源代码 (记得在家 ...
- iTOP-4412开发板-实战教程-ssh服务器移植到arm开发板
本文转自迅为开发板:http://www.topeetboard.com 在前面实战教程中,移植了“串口文件传输工具”,整个移植过程是比较简单的,而且我 们没有做任何协议方面的了解,只是“配置”+“编 ...
- 【转帖】嵌入式4412开发板QT5.7编译安装到arm
QT5.7.0+UBUNTU16.04+ARM-NONE-LINUX-GNUEABI4.8+busybox最小LINUX系统 Orandragon记录 本文转自迅为4412开发板群:http://to ...
- qt-5.6.0 移植之qt文件系统的建立
经过差不多两个星期的奋斗,终于在板子里面跑起来了qt 程序,虽然现在还没有把触摸屏驱动加上去,但是我相信已经不远了!!!!! 在前两篇的随笔里面 , 已经编译好了最纯净的文件系统以及交叉编译完成了qt ...
- Qt5.7.0移植到4412
搞了几天,终于把Qt5.7移植到4412上,下面是一些自己移植过程中的记录,希望能帮到其他人. 一.需要下载的文件, 下载qt5.7源码qt-everywhere-opensource-src-5.7 ...
随机推荐
- 关于fork()父子进程返回值的问题
我们都知道,父进程fork()之后返回值为子进程的pid号,而子进程fork()之后的返回值为0.那么,现在就有一个问题了,子进程fork()的返回值是怎么来的?如果子进程又执行了一遍fork()函数 ...
- 自动添加需要编译的源文件Android.mk模板
自动添加需要编译的源文件列表 添加第三方静态库.动态库的依赖 假设我们的项目依赖 libmath.a, libjson.a, libffmpeg.so 这几个第三方库文件,项目包含如下几个模块:a ...
- svn版本库目录结构
该文是svn源代码分析系列文章服务端架构中的一篇,主要描述svn服务端版本库数据存储目录结构,并且对这些文件以及目录的作用进行简单分析.使用“svnmadin create”命令创建初始化版本库后 ...
- ajax的适用场景
1.适用:基本所有的网站都有涉及到. 2.典型使用场景: 动态加载数据,按照需要取数据 改善用户体验 电子商务应用 访问第三方服务 数据局部刷新
- Wedding (poj 3648 2-SAT 输出随意一组解)
Language: Default Wedding Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9004 Accept ...
- Android开发者必知的5个开源库
摘要:过去的时间里,Android开发逐步走向成熟.而无论出现多少Android相关的开发工具,我们每天使用的大量开源库却始终是不可或缺的.这里,向大家介绍的是,这个任劳任怨的大家庭中,最受开发者喜爱 ...
- @Resource 注解
@Resource 注解被用来激活一个命名资源(named resource)的依赖注入,在JavaEE应用程序中,该注解被典型地转换为绑定于JNDI context中的一个对象. Spring确实支 ...
- oracle 创建表并添加注释
CREATE TABLE t1(id varchar2(32) primary key,name VARCHAR2(32) ,age VARCHAR2(32) ) 添加表注释:COMMENT ON t ...
- 九度OJ 1359:大魏树遍历 (树)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:299 解决:29 题目描述: 大魏是JOBDU技术组里最喜欢折腾的一个了,单反.骑车.改九度页面,当然还有YY prado.我们姑且先把这些 ...
- Ubuntu 系统下可以做什么?
ubuntu和windows到底有什么不同呢?从大的方面讲,它们的设计理念不同.借用一位知乎前辈说的“windows为不知道自己正在做什么的人设计,linux为知道自己要做什么,正在做什么的人设计”. ...