qt5移植时需不需要 export qt 配置qmake路径spec

  1、在编译的时候出现下面的错误:QMAKESPEC has not been set, so configuration cannot be deduced.Error processing project file: XXXXX.pro
&这是因为QMAKESPEC变量没有设置好
网上说要这么改,
在/root/.bash_profile里加入一行:export QMAKESPEC=/home/arm/build/qt/mkspecs/linux-arm-g++(即是linux-g++的路径)。
试了不行,又在/etc/profile下
添加export QMAKESPEC=/home/arm/build/qt/mkspecs/linux-arm-g++
  2、这样上面的问题倒是解决了,可是又显现如下问题:
//arm/build/qt/include/QtCore/qatomic_i386.h: In destructor 'QString::~QString()'://arm/build/qt/include/QtCore/qatomic_i386.h:132:29: error: output number 0 not directly addressable//arm/build/qt/include/QtCore/qatomic_i386.h:132:29: warning: use of memory input without lvalue in asm operand 2 is deprecated [enabled by default]make: *** [dialog.o] 错误 1
网上的朋友说这是缺少需要一个QT_ARCH_ARM的宏,试着用重新make distclean& 又make后,还是出现这样的问题。
功力尚且,不能解决,先记录下来。。。
  无奈之下只有重新编译:
  3、The specified system/compiler is not supported
查看环境变量export发现有一个环境变量  QMAKESPEC=............这时之前配置过的,unset QMAKESPEC,接着配置就没问题了
  4、注意事项
在配置QT是,配置命令是其长无比的,要是中间多个空格或者少个空格,那就吃大亏了,让你找半天都找不到错误。
阅读(...) 评论()同步到微博查看: 7792|回复: 10
Qt5.4.1移植到arm——Linuxfb篇
主题帖子积分
中级会员, 积分 321, 距离下一级还需 179 积分
中级会员, 积分 321, 距离下一级还需 179 积分
本帖最后由 conway 于
15:48 编辑
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、到下载源码包
$ tar xzf qt-everywhere-opensource-src-5.4.1.tar.gz
$ cd qt-everywhere-opensource-src-5.4.1/
4、指定所用平台的arm架构以及交叉编译器:
$ vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
改成以下内容,实际应需要根据自己的开发环境作出相应改变:
# qmake configuration for building with arm-linux-gnueabi-g++
MAKEFILE_GENERATOR
+= incremental
QMAKE_INCREMENTAL_STYLE = sublib
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE
+= -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
QMAKE_INCDIR += /usr/local/tslib/include
QMAKE_LIBDIR += /usr/local/tslib/lib
# modifications to g++.conf
= arm-linux-gnueabihf-gcc -lts
= arm-linux-gnueabihf-g++ -lts
QMAKE_LINK
= arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB
= arm-linux-gnueabihf-g++ -lts
# modifications to linux.conf
= arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY
= arm-linux-gnueabihf-objcopy
= arm-linux-gnueabihf-nm -P
QMAKE_STRIP
= arm-linux-gnueabihf-strip
load(qt_config)
5、根据自己的实际需求配置Qt:
$ ./configure \
-prefix /usr/local/qt5.4.1 \
-confirm-license \
-opensource \
-make libs \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-make examples -nomake tools -nomake tests -no-iconv
6、编译安装:
$ 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环境变量:
root@MYD-AM335X:~# vi /etc/init.d/qt.sh
添加下面内容:
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/tslib/lib:/opt/qt5.4.1/lib
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/tslib/bin
export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/qt5.4.1/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=/opt/qt5.4.1/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE
保存退出后使上面的环境变量生效:
root@MYD-AM335X:~# source /etc/init.d/qt.sh
9、运行一些example:
root@MYD-AM335x ~# /opt/qt5.4.1/examples/touch/pinchzoom/pinchzoom
qt5-2.jpg (255.96 KB, 下载次数: 2)
14:42 上传
root@MYD-AM335x ~# /opt/qt5.4.1/examples/svg/embedded/fluidlauncher/fluidlauncher
qt5.jpg (113.27 KB, 下载次数: 45)
14:42 上传
我们可以看到用linuxfb方式的运行的QT是没有窗体边框的,这是qt5的一个特点,似乎是其为了更好的转移到手机等移动终端。
主题帖子积分
金牌会员, 积分 1195, 距离下一级还需 1805 积分
金牌会员, 积分 1195, 距离下一级还需 1805 积分
qt5移植时内核那边需要做些什么工作?
主题帖子积分
中级会员, 积分 321, 距离下一级还需 179 积分
中级会员, 积分 321, 距离下一级还需 179 积分
qt5移植时内核那边需要做些什么工作?
这个是文件系统的东西,仅仅是移植一些QT库,跟内核无必然联系。
主题帖子积分
金牌会员, 积分 1195, 距离下一级还需 1805 积分
金牌会员, 积分 1195, 距离下一级还需 1805 积分
这个是文件系统的东西,仅仅是移植一些QT库,跟内核无必然联系。
如果想利用Qt做一个图形界面,在LCD上看到效果需要哪些步骤?
主题帖子积分
中级会员, 积分 321, 距离下一级还需 179 积分
中级会员, 积分 321, 距离下一级还需 179 积分
如果想利用Qt做一个图形界面,在LCD上看到效果需要哪些步骤?
用上面的方法在开发板上搭建好Qt环境后,在PC端编写Qt图形界面程序,交叉编译后复制到开发板运行就好了。你买个板子玩就知道了。
主题帖子积分
新手上路, 积分 6, 距离下一级还需 44 积分
新手上路, 积分 6, 距离下一级还需 44 积分
求帮助,编译时提示如下错误,按你说的修改的,编译器arm-none-linux-gnueabi-g++ 4.7.2版本
E:\{853F561F-C450--A20B5ABDA50A}.bmp
主题帖子积分
新手上路, 积分 6, 距离下一级还需 44 积分
新手上路, 积分 6, 距离下一级还需 44 积分
求帮助,编译时提示如下错误,按你说的修改的,编译器arm-none-linux-gnueabi-g++ 4.7.2版本
怎么看不到图,提示如下:
& &The specified system/compiler is not supported:
& && &/home/chijf/win7/qt-everywhere-opensource-src-5.4.0/qtbase/mkspecs/arm-linux-gnueabi-g++
& &Please see the README file for a complete list.
主题帖子积分
中级会员, 积分 241, 距离下一级还需 259 积分
中级会员, 积分 241, 距离下一级还需 259 积分
请问楼主的交叉编译工具是什么?为什么我编译qt的时候出现了错误,
Running configuration tests...
Warning: Disabling pkg-config since PKG_CONFIG_LIBDIR is not set.
Warning: Disabling pkg-config since PKG_CONFIG_SYSROOT_DIR is not set.
Could not determine the target architecture!
Turn on verbose messaging (-v) to see the final report.
The tslib functionality test failed!
主题帖子积分
中级会员, 积分 321, 距离下一级还需 179 积分
中级会员, 积分 321, 距离下一级还需 179 积分
请问楼主的交叉编译工具是什么?为什么我编译qt的时候出现了错误,
[mw_shl_code=applescript,true]Runn ...
这个交叉编译工具是指你开发板对应的gcc工具链,你是什么硬件平台的?你的tslib也没装吧?
主题帖子积分
中级会员, 积分 241, 距离下一级还需 259 积分
中级会员, 积分 241, 距离下一级还需 259 积分
我的硬件平台就是MYD-AM335X,按你们手册的安装tslib,编译出现错误,后来我去网上找了一个,装到了 /usr/local/.& && && && &&&
编译器用的是你们光盘带的工具链
export PATH=$PATH:~/arm_workspace/Toolchain/gcc-linaro-arm-linux-gnueabihf-4.7-30313_linux/bin
export CROSS_COMPILE=arm-linux-gnueabihf-
主题帖子积分
新手上路, 积分 21, 距离下一级还需 29 积分
新手上路, 积分 21, 距离下一级还需 29 积分
楼主,你好:
& & QT5不是可以支持多点触摸吗?为什么还要tslib?tslib只是支持单点触摸的。
是不是QT5编译时有选项可选择多点或单点触摸呢?
是不是选择了多点就不需要tslib了呢?
Powered by二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
好久没有你的信
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
本文转载自大象
分类:&& 19:07&725人阅读&(1)&&目录&个人测试,不保证移植全部正确&一:Qt在开发板运行测试二:Qt 简介三:Qt开发环境与跨平台四:Qt5.2.1移植,主机开发环境安装五:Qt5.2.1移植,交叉编译环境安装六:QtCreator交叉编译版本配置&&七:触摸屏tslib移植八:新唐开发板移植&&一:Qt在开发板运行测试1.新唐N32905U1DN开发板启动状态&&2.&Qt5.2.1交叉编译后测试程序运行图&4.&Qt5.2.1运行时开发板系统状态&&二:Qt 简介&Qt是1991年奇趣科技开发的一个的图形用户界面应用程序框架,2008年,奇趣科技被公司收购,QT也因此成为旗下的工具。2012年,Qt被Digia收购,日,Digia公司Qt开发团队宣布Qt 5.2正式版发布。&1首先Qt显著的特点之一:是一款基于c++的图形界面库。同样著名的还有基于c语言的&GTK图形界面库,Wxwigets以及windows的MFC等等。2其次Qt具有跨平台的能力,它在个人电脑,嵌入式系统上运行,也在不同操作系统,windows ,linux ,solaris ,mac,wince ,vxwork上运行,其跨平台实现方式属于一次编写多处编译(多处运行),但不同平台要重新编译,以将平台无关的东西转换为平台相关的东西。3目前&Digia已经发布Qt 5.2,支持Android、iOS平台,提供Windows RT功能预览,并推出了新的Qt移动工具包。&Qt Library与Qt Creator&&& 一般所说的qt工具包含这两者:&Qt Creator是&Qt被&Nokia收购后推出的一款新的轻量级(IDE)它包含:&高级&C++代码编辑器,项目和生成管理工具集成的上下文相关的帮助系统图形化调试器代码管理和浏览工具等&Qt Library是一个库,包含编译器,各种链接库Qt开发可以没有Qt Creator,但Qt Library是必不可少。Qt Creator作为Qt配套的集成开发环境供开发人员使用,但在一些平台也可以用visual studio,Eclipse等替代。&除了Qt Library与Qt Creator&&& 两种包外,也还有Qt SDK安装包形式安装qt Library库需要下载后进行配置编译等等过程。而SDK下载后安装,环境就自动搭建好了,也就是傻瓜式安装包。SDK其中包括最新完整的&Qt库,&Qt Creator以及&Qt Designer等开发工具,目前也有几个平台提供了&Qt SDK。(但SDK通常未包含交叉编译工具,需再安装)下载页面:&三:Qt开发环境与跨平台目前由Qt所开发的软件产品中,有运行在windows之上,也有的运行在ubuntu等系统之上,甚至是嵌入式之上,实现了不同操作系统和平台的跨越。qt的跨平台实现:主要原理是在不同平台上实现了具有相同函数接口的lib库,使同一套qt代码在不同平台编译后,将平台无关的东西转化为本地平台相关的东西,使编译出的程序能够在本地平台上运行。与java,c#不同,qt这种方式属于一次编写多处编译。Qt Library与跨平台使用qt开发软件,要使同一套代码在不同平台上编译后能够在各平台正确运行,需要配置好qt开发编译环境使之与本地平台运行环境相符合。为此Qt官方网站提供了支持不同平台的Qt Library源码包,所以qt开发环境搭建一般需要下载与本地平台相关的Qt Library进行配置与编译,或者傻瓜式安装包。&&&Qt版本划分:Win32版,适用于Windows平台;X11版,适合于使用了x系统的各种&linux和&unix的平台;Mac版,适合于苹果MacOS;embedded版,适合于具有帧缓冲(frame buffer)的linux的平台。·&&&&&&&&&Qt泛指Qt的所有桌面版本,例如X11版&()适用于linux内核的ubuntu等桌面系统等。·&&&&&&&&&Qt/E指Qt的嵌入式版本,例如embedded版&(),适用于linux嵌入式。由于嵌入式受限的硬件环境往往难以运行庞大的X服务器,Qt/E去掉了X Lib的依赖而直接工作于Frame Buffer上,因而效率更高。·&&&&&&&&&Qtopia:一般命名为qtopia-opensource,最初是sourceforge.net上的一个开源项目,全称是Qt Palmtop Environment,是构建于Qt/E之上一个类似桌面系统的应用环境,包括了PDA和手机等掌上系统常见的功能如电话簿、日程表等。现在Qtopia已经成为了Trolltech的又一个主打产品,为基于Linux操作系统的PDA和手机提供了一个完整的图形环境。区别:Qt/E是嵌入式版基础类库,Qtopia是构建于Qt/E之上的一系列高级应用。相对于Qt桌面X11版,Qt/E不是通过X11绘画,而是直接到framebuffer或别的在QT4版本前要安装Qtopia需要先装Qt/E,但之后的就不需要了,4之后的Qtopia已经带有QT/E库了。自从奇趣公司被Nokia收购,Qtopia已经逐渐停止了所有开发,因此qtopia-opensource-4.3.3是一个终结版。而QT/E的改名过程,Qte--&Qtopia Core--&Qt-embedded-linux-xxxx,例如现在embedded版&()所以在以往QT总体归纳三种:面向桌面的x11、面向嵌入式的Qt/E、以及面向嵌入式带各种应用程序的Qtopia桌面系统&Qt5新版qt-everywhere-source是Qt目前源码包的新改版,它用一套版本源代码统一了以前X11,Qt/E等分支版本,以往Qt不同平台环境搭建需要下载不同源码包编译。而用qt-everywhere-source只要configure时设置好了对应的平台以及交叉编译工具链就可以编译出各个平台上的Qt库例如Qt4.8.5版选择&&()&或者&&()&都会得到qt-everywhere-opensource-src-4.8.5.tar.gz,资源包只需对qt-everywhere-opensource-src-4.8.5.tar.gz进行不同的配置就可以编译出X11桌面版和嵌入式版本参照Building_Qt_for_Embedded_Linux文章/2012/11/qt4-8-3-transplant/&2.qt-opensource- .run&&&&&&&&&qt-opensource-linux-x86-5.2.1.run&是linux平台下Qt5桌面版pc机安装包,包括最新完整的&Qt库,&Qt Creator以及&Qt Designer等开发工具&&&四: Qt5.2.1移植,主机开发环境安装Ubuntu12.04系统下,Qt5.2. 1一键安装包&方法1使用qt-opensource-linux-x86-5.2.1.run直接安装(包含qtcreator)下载安装包,增加执行权限 chmod u+x qt-opensource-linux-x86-5.2.1.run 执行安装&&&&&&&&&Sudo& ./ qt-opensource-linux-x86-5.2.1.run安装g++:sudo apt-get updatesudo apt-get install build-essential&&方法2&使用Qt5.2.1源码包编译及安装(无qtcreator)只建议用方法1安装,方法2麻烦易出错&参考:&&五:Qt5.2.1移植,交叉编译环境安装Ubuntu12.04 32bit1.下载qt-everywhere-opensource-src-5.2.1.tar.gz源码包&&下载arm-linux-gcc-4.4.3.tar.gz包,(arm板编译工具)&配置编译Qt源码包之前需预先安装,g++,opengl,xcb。&2.在线升级安装sudo apt-get updateg++:sudo apt-get install build-essentialxcb:sudo apt-get install libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync0 libxcb-sync0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-glx0-dev(可察看README中&Linux: On systems running X11, the XCB libraries are required for the platform plugin to build. qtbase/src/plugins/platforms/xcb)opengl:sudo apt-get install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-devdbus:&sudo apt-get install dbus-*dev&:3.安装arm编译工具arm-linux-gcc:arm-linux-gcc-4.4.3.tar.gz包:&解压sudo tar -xvzf&arm-linux-gcc-4.4.3.tar.gz –C /解压后得到/opt/FriendlyARM&/目录添加环境&:将arm-linux-gcc工具链加入环境路径中:&打开sudo gedit& /etc/bash.bashrc,在最后一行加入export PATH=”$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin”保存使环境变量生效: source /etc/bash.bashrc检查环境变量是否生效&:echo $PATH检查arm-linux-gcc是否生效: arm-linux-gcc –v在ubuntu 64位系统需提前安装32位库,否则arm-linux-gcc –v会失败,sudo apt-get install ia32-libs,出现错误可以检查执行文件位是否为32-bitfile /opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/bin/gcc然后检查系统是否也为32位:file /bin/ls&&4. Qt源码包交叉编译(示例)&&&&&&&&&&——Qt5.0.2以后采用了QPA插件跨平台,也就是说在新版本中qws已经无效,取消了embedded,而是用-xplatform指定目标板配置,以下采用版本5的新方法和QPA进行编译&进入目录:解压tar -xvzf qt-everywhere-opensource-src-5.2.1.tar.gz改名mv qt-everywhere-opensource-src-5.2.1 qt-5.2.1-armcd qt-5.2.1-arm&cd ./qtbase/mkspecs说明:Qt5源码包进行编译所依赖的配置文件在mkspec目录中,本例 configure 交叉编译选项便指定为 –xplatform linux-arm-test&创建新配置目录:以一个linux-arm-test配置目录为例,将mkspecs目录下的linux-arm-gnueabi-g++复制为linux-arm-testcp linux-arm-gnueabi-g++ linux-arm-test –r修改linux-arm-test配置cd linux-arm-test查看ls /opt/FriendlyARM/toolschain/4.4.3/bin查看目录下实际编译工具链名将linux-arm-test目录下qmake.config中的arm-linux-gnueabi-开头都更改为实际路径加工具链名:PATH+arm-none-linux-gnueabi-&如QMAKE_CC &= /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-gcc再加入三行:QT_QPA_DEFAULT_PLATFORM = linuxfb &&&&&#qpa图形插件,QMAKE_CFLAGS_RELEASE&& += -O2 -march=armv5teQMAKE_CXXFLAGS_RELEASE += -O2 -march=armv5te&说明1:QT_QPA_DEFAULT_PLATFORM选项是指定图形插件, Qt5将各平台底层抽象为一个 qpa 插件,通常在mac上是cocoa, 在window上是windows, 在linux X11下是xcb, 如果有OPENGL支持, 那么选eglfs。而对于无硬件加速的设备,则选择linuxfb,。&&& minimal仅仅是让程序跑通, 不起任何作用说明2:目标板为新唐N32905U1DN,cpu为arm936ejs,执行arm-linux-gcc –target-help 查看交叉编译器所支持的架构,选择了其中比较接近的一个为armv5te&修改qmake.conf文件:## qmake configuration for building with arm-linux-gnueabi-g++#&MAKEFILE_GENERATOR&&&&&&= UNIXCONFIG&&&&&&&&&&&&&&&&&&&&&&&& &+= incremental gdb_dwarf_indexQMAKE_INCREMENTAL_STYLE = sublib&QT_QPA_DEFAULT_PLATFORM = linuxfbQMAKE_CFLAGS_RELEASE&&&+= -O2 -march=armv5teQMAKE_CXXFLAGS_RELEASE += -O2 -march=armv5te&&include(../common/linux.conf)include(../common/gcc-base-unix.conf)include(../common/g++-unix.conf)&# modifications to g++.confQMAKE_CC&&&&&&&&&&&&&= /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-gccQMAKE_CXX&&&&&&&&&&&&= /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-g++QMAKE_LINK&&&&&&&&&&&= /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-g++QMAKE_LINK_SHLIB&&&&= /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-g++&# modifications to linux.confQMAKE_AR &&&&&&&&= /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-ar cqsQMAKE_OBJCOPY &&= /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-objcopyQMAKE_NM&&&&&&&= /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-nm -PQMAKE_STRIP&&&&= /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-stripload(qt_config)&&保存qmake进入qt-5.2.1-arm目录下&&&&&&&& configure配置:&在qt-5.2.1-arm目录下执行 sudo ./configure -prefix $PWD/qtbase -release -opensource -xplatform linux-arm-qt -nomake tests -no-largefile -qt-zlib -no-nis -qt-libpng -qt-libjpeg -qt-freetype(取消配置为 make confclean,make clean,)&配置完成后打印信息为:Running configuration tests...Warning: Disabling pkg-config since PKG_CONFIG_LIBDIR is not set.Warning: Disabling pkg-config since PKG_CONFIG_SYSROOT_DIR is not set.&&&Configure summary&Building on:&&linux-g++ (i386, CPU features:)Building for:&linux-arm-qt (arm, CPU features:)Platform notes:&&&&&&&&&&&&- Also available for Linux: linux-kcc linux-icc linux-cxx&&&&&&&Build options:&Configuration .......... accessibility audio-backend c++11 clock-gettime clock-monotonic compile_examples concurrent cross_compile evdev eventfd freetype full-config getaddrinfo getifaddrs iconv inotify ipv6ifname large-config linuxfb medium-config minimal-config mremap no-harfbuzz no-pkg-config pcre png posix_fallocate precompile_header qpa qpa reduce_exports reduce_relocations release rpath shared small-config zlib&Build parts ............ libs examples&Mode ................... release&Using C++11 ............ yes&Using PCH .............. yes&Target compiler supports:&&&iWMMXt/Neon .......... no/no&Qt modules and options:&Qt D-Bus ............... no&Qt Concurrent .......... yes&Qt GUI ................. yes&Qt Widgets ............. yes&JavaScriptCore JIT ..... yes (To be decided by JavaScriptCore)&QML debugging .......... yes&Use system proxies ..... no&Support enabled for:&Accessibility .......... yes&ALSA ................... no&CUPS ................... no&FontConfig ............. no&FreeType ............... qt&Iconv .................. yes&ICU .................... no&Image formats:&&&GIF .................. yes (plugin, using bundled copy)&&&JPEG ................. yes (plugin, using bundled copy)&&&PNG .................. yes (in QtGui, using bundled copy)&Glib ................... no&GTK theme .............. no&Large File ............. no&mtdev .................. no&Networking:&&&getaddrinfo .......... yes&&&getifaddrs ........... yes&&&IPv6 ifname .......... yes&&&OpenSSL .............. no&NIS .................... no&OpenGL ................. no&OpenVG ................. no&PCRE ................... yes (bundled copy)&pkg-config ............. no&PulseAudio ............. no&QPA backends:&&&DirectFB ............. no&&&EGLFS ................ no&&&KMS .................. no&&&LinuxFB .............. yes&&&XCB .................. no&Session management ..... yes&SQL drivers:&&&DB2 .................. no&&&InterBase ............ no&&&MySQL ................ no&&&OCI .................. no&&&ODBC ................. no&&&PostgreSQL ........... no&&&SQLite 2 ............. no&&&SQLite ............... yes (plugin, using bundled copy)&&&TDS .................. no&udev ................... no&xkbcommon .............. no&zlib ................... yes (bundled copy)&NOTE: Qt is using double for qreal on this system. This is binary incompatible against Qt 5.1.Configure with '-qreal float' to create a build that is binary compatible with 5.1.Info: creating cache file /home/kvl/Qt521-arm/qtbase/.qmake.cache&Qt is now configured for building. Just run 'make'.Once everything is built, you must run 'make install'.Qt will be installed into /home/kvl/Qt521-arm/qtbase/qtbase&Prior to reconfiguration, make sure you remove any leftovers fromthe previous build.&编译基本模块:在qt-5.2.1-arm目录下执行sudo makeqt5.2.1make后有Unknown module(s) in QT:quick错误,需要opengl支持,部分扩展功能会无法使用,但不支持opengl的嵌入式板上编译了opengl也可使用linuxfb插件运行,只是qml这些功能不会正常执行。&david4383注:configure中加入-nomak examples则不会出现上述错误。检查:cd qt-5.2.1-arm/qtbase/bin&& ./qmake –v输出信息:Using Qt version 5.2.1 in qt-5.2.1-arm/qtbase/lib检查:在qt-5.2.1-arm/qtbase/lib目录下执行 file& libQtGui.so.5.2.1 输出中有ARM关键字&&编译其他模块(可选):以此图为说明:Qt5的各功能模块保持一定独立,以目录形式分布在源码目录中,configure配置编译的只是qtbase基础部分,make后会生成bin/qmake执行文件和lib中的动态库,如果需使用图中所示蓝色名字的其他模块功能,可按实际需求在各个目录下分别编译各模块动态库/opt/Qt521-arm/bin/qmake,可以生成Makefile文件,然后make编译,make install安装到lib目录下&细节:webkit依赖于ICU(Unicode支持,软件国际化),假如需要编译webkit功能,在configure配置时必须使ICU被成功编译。而quick,qml与opengl有关,支持此模块也必须使opengl es2被成功编译,但即便成功编译,如果开发板不支持opengl es2图形硬件加速,也无法正常执行。要构建qt3D还需要先配置两个模块qtjsbackend(has v8),qtdeclarative。&参考Qt5 on ARM platforms – Introduction&configure部分选项解释Qt Configure Options:&& http://qt-project.org/doc/qt-5/configure-options.html1.&&&&&&Opengl图形2.&&&&&&opengl es是&OpenGL&API的子集,针对手机、PDA和游戏主机等而设计3.&&&&&&dbus:&(进程间通信机制)4.&&&&&&ALSA高级(Linux声音架构)5.&&&&&&FontConfig提供系统范围内字体设置6.&&&&&&FreeType字体引擎7.&&&&&&Iconv多种国际编码格式之间进行文本的转换8.&&&&&&ICU &&(Unicode支持,软件国际化)&QtWebkit requires ICU support to be present9.&&&&&&cups: sudo apt-get install cups foomatic-db system-config-printer (unix打印服务)10.&&&mtdev触摸屏多点触摸协议11.&&&openssl&为提供安全及的一种安全协议,加密12.&&&XCB libxcb provides an interface to the X Window System protocol, slated toreplace the current Xlib interface13.&&&LinuxFB Framebuffer[1]是用一个视频输出设备从包含完整的帧数据的一个内存缓冲区中来驱动一个视频显示设备&&其他:QMAKE文档:&&& Configure配置参考:&& &http://qt-project.org/doc/qt-5/configure-options.html&六: QtCreator交叉编译版本配置&1.下载qt-creator-opensource-linux-x86_32.3.0.1.run安装包(32位ubuntu系统)chmod u+x&qt-creator-opensource-linux-x86_32.3.0.1.run&执行安装(qtcreator每个平台都有支持的版本下载,实际开发中为方便而直接安装了qt-opensource-linux-x86-5.2.1.run此步骤可省略)如果运行qtcreator出现写错误,修改目录.config权限,sudo chmod 777 /home/uname/.config –R&2.使用QtCreator配置多版本编译环境以例1为例:添加交叉编译版本&&&&&&&&&在qtcreator中选择Tools/Option&在Build&Run中的Qt Version使用Add添加一个新版本,命名为Qt521-arm。添加交叉编译源码包qt-everywhere-opensource-src-5.2.1.tar.gz后的qmake执行文件/opt/qt521-arm/qtbase/bin/qmake选择Kits,Add新建qt编译版本,将之前的交叉编译所需的Qt Version和Compile添加进来将/opt/qt521-arm/qtbase/bin目录中的qt.conf改为prefix=/opt/qt521-arm/qtbase/,这样qtcreator运行qmake时就能找到此目录下的mkspec进行配置。新建简单工程选择Qt-arm版本进行build编译测试,不是错误,网上解决方法在makefile里面加上这个编译选项:-Wno-psabi&创建qtcreator桌面图标示例:执行以下命令创建一个App快捷方式:sudo gedit /usr/share/applications/qtcreator.desktop在gedit中输入以下代码:Name= QtCreator PlatformComment= QtCreator IDEExec=/opt/Qt5.2.1/Tools/QtCreator/binIcon=/opt/qt521arm2/qtbase/tests/auto/gui/image/qimage/images/image.xpmTerminal=falseStartupNotify=trueType=ApplicationCategories=Development在/usr/share/applications/目录下找到qtcreator.desktop右键copy to desktop&&七:触摸屏tslib移植1.下载tslib源码包2.解压,进入源码包目录下运行sudo ./tslib.shtislib.sh 脚本需按各自环境编写:export CC=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gccexport CXX=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-g++export PREFIX=/usr/local/kvl/tslib./autogen.shecho "ac_cv_func_malloc_0_nonnull=yes"&arm-linux.cache./configure --host=arm-linux --prefix=$PREFIX --cache-file=arm-linux.cache --enable-inputapi=nomakemake install&include头文件和lib库安装在/usr/local/kvl/tslib目录中(以上步骤需指定CC,CXX完整路径,否则即使指定了host,在ubuntu中仍可能会默认为8086编译)&3.编译Qt5.2.1的tslib插件&&&&&&&& 进入qtbase/src/plugins/generic/tslib目录&&&&&&&&&执行 sudo gedit tslib.pro&&&&&&&& pro加入tslib库路径& LIBS += -lts -I/usr/local/kvl/tslib/include -L/usr/local/kvl/tslib/lib&&&&&&&& 生成MakeFile: /opt/qt521-arm/bin/qmake&&&&&&&& 编译: make&&&&&&&& 安装 make install&&&&&&&&& (在源码包中qtbase/plugins/generic会生成libqtslibplugin.so插件库,对应在/usr/local/qt521-arm//plugins/generic目录下也生成strip压缩版同名插件库,插件库目录plugins将在后续步骤中拷贝到开发板作为必要的动态库使用)4.检查 file libqtslibplugin.so&是否有ARM关键字出现david4383注:拷在开板上的时候,也要使用plugins/generic这个文件夹,否则触摸屏会找不到。默认的编译中这个库并不产生,所以要自己手动编译,可以使用QTCREATOR编译,也可以按上述方法编译,最后把这个libqtslibplugin.so插件库拷到/plugins/generic目录就可以。&八:新唐开发板移植&1.串口通信工具配置:2.开发板启动配置文件:/etc/profile开发板启动后会调用boot_script脚本&3.配置开发板qt程序以及tslib环境库&bin,plugins——将qtbase目录下的plugins和bin目录拷贝到开发板SD卡lib/qtlib——在SD卡中创建目录lib/qtlib,将qtbase目录下lib中的qt动态库约18个so文件拷贝到qtlibarm-linux-gnueabi——由于开发板自带程序是静态编译可直接启动,而本例qt程序是动态编译,需配置基本启动环境,先将ubuntu中arm-linux-gnueabi目录复制到开发板/lib中fonts——将qtbase目录下lib中的fonts字体库拷贝到开发板preloadable_libiconv.so——下载解压libiconv-1.11.tar.gz包,ubuntu下用arm-linux-gcc编译,要将生成的preloadable_libiconv.so拷贝到开发板的qtlib中,qt程序启动时会调用此库ts——创建ts目录,找到之前编译的tslib库,将/usr/local/kvl/tslib目录下lib库中libts-1.0.so.0.0.0 文件以及ts中的so库都拷贝到开发板ts目录中,在开发板中再用libts-1.0.so.0.0.0复制出另外两个文件libts-1.0.so.0和libts.so(这里复制成两个文件,简化了创建链接的步骤)将/usr/local/kvl/tslib/bin中的几个触摸屏测试程序拷贝到SD卡中&将/usr/local/kvl/tslib/etc目录下ts.conf配置文件也拷贝到开发板ts目录中,修改内容如下图&至此运行环境基本的库已经拷贝到开发板SD卡中&&4.编写脚本设置动态库加载环境以及tslib运行环境&&&&&&&&&(开发板启动后会调用boot_scripts脚本,SD卡挂载为/mnt/nand1-1)编写boot_scripts示例&#!/bin/sh&&&&&&&& echo "create lib"&&&&&&&& echo $PATH&(所有程序运行都需加载ld-2.15.so库,否则会出现错误No such file,此库在ubuntu以及Fedora等操作系统中目录安放标准不不统一,所以做了以下三个版本的#for)#create program load libraries&&&&&&&&& mkdir /lib&&&&&&&& chmod 777 /lib&&&&&&&& cp /mnt/nand1-1/lib/arm-linux-gnueabi/lib/ld-2.15.so /lib&&&&&&&&&&&&#for Fedora/OpenSUSE&&&&&&&& ln -s /lib/ld-2.15.so /lib/ld-linux.so.3#for Debian/Ubuntu&&&&&&&& mkdir /lib/arm-linux-gnueabihf&&&&&&&& ln -s /lib/ld-2.15.so /lib/arm-linux-gnueabihf/ld-linux.so.3#for&&&&&&&& ln -s /lib/ld-2.15.so /lib/ld-linux-armhf.so.3&(因为此开发板根文件系统占用了有限的内存空间,将动态库拷贝到/lib目录中会减少可用内存使qt程序运行很卡,所以替换方法为在/lib目录下创建各动态库链接)#create ln&&&&&&&& # cp /mnt/nand1-1/lib/arm-linux-gnueabi /lib -r&&&&&&&& mkdir /lib/arm-linux-gnueabi/lib –p.......................&&export LD_LIBRARY_PATH=/lib/arm-linux-gnueabi/lib:/lib/qt:/mnt/nand1-1/lib/qtlib:$LD_LIBRARY_PATHecho "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"#(配置所有环境变量后启动qt程序脚本)/mnt/nand1-1/qt.sh&编写qt.sh示例#!/bin/sh&#export QWS_SIZE=324*240#export QWS_DISPLAY="LinuxFb:mmWidth300:mmHeight330:0"#export TSLIB_CONSOLEDEVICE=none&#配置tslib环境:export TSLIB_ROOT=/mnt/nand1-1/lib/ts& #tslib根目录export TSLIB_CONFFILE=$TSLIB_ROOT/ts.conf #tslib配置文件export TSLIB_PLUGINDIR=$TSLIB_ROOT&&&&&&& #tslib插件目录export TSLIB_TSDEVICE=/dev/input/event0&& #tslib对应的设备驱动export TSLIB_CALIBFILE=$TSLIB_ROOT/pointercal&&&&&&&& #tslib校验后的配置文件目录export TSLIB_FBDEVICE=/dev/fb0&&export TSLIB_CONSOLEDEVICE=none&export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOTexport LD_LIBRARY_PATH=/lib/arm-linux-gnueabi/lib:/lib/qt:/mnt/nand1-1/lib/qtlib:$LD_LIBRARY_PATHecho "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"&#配置qt插件以及执行环境export QTDIR=/mnt/nand1-1export PATH=$QTDIR/bin:$PATHexport QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins #qt插件加载目录export QT_QPA_GENERIC_PLUGINS=tslib&& #qt所要加载的插件名export QT_QPA_PLATFORM=linuxfb:tty=/dev/tty0&&&&&&&&& #qt图形插件平台export QT_QPA_FONTDIR=$QTDIR/lib/fonts&&&&&&&&&& #qt字体库目录export LD_PRELOAD=$QTDIR/lib/qtlib/preloadable_libiconv.so #qt加载preloadable_libiconv.so的路径&#开发板自带程序/mnt/nand1-1/desktopManager &/mnt/nand1-1/powerManager &&#ubuntu下交叉编译的qt测试程序/mnt/nand1-1/qt -platform linuxfb -plugin Tslib &&5. tslib触屏校验要使开发板触屏工作正常,必需进行一次tslib触屏校验&编写ts.sh脚本#!/bin/sh&export TSLIB_ROOT=/mnt/nand1-1/lib/ts#export TSLIB_ROOT=/usr/gui/tslibexport TSLIB_CONFFILE=$TSLIB_ROOT/ts.confexport TSLIB_PLUGINDIR=$TSLIB_ROOTexport TSLIB_TSDEVICE=/dev/input/event0export TSLIB_CALIBFILE=$TSLIB_ROOT/pointercalexport TSLIB_FBDEVICE=/dev/fb0&&export TSLIB_CONSOLEDEVICE=none&&export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOTexport LD_LIBRARY_PATH=/lib/arm-linux-gnueabi/lib:/lib/qt:/mnt/nand1-1/lib/qtlib:$LD_LIBRARY_PATH./ts_calibrate#./ts_test&最后声明:错误很多,字体大小有问题,和qt设计器字体不同步,此板也没支持opengl es2,qt5很多功能受限,如果学习目的建议换其他硬件配置更高的板玩,如果硬件板能跑安卓,还用什么qt5呢、。。。。。。david4383注:1、字体很小的问题:是通过设置QFont来实现的,设置字为128,才与正常差不多,环境中此设置不起作用。&2、在环境变量中设置QT_QPA_DEFAULT_PLATFORM=linuxfb,则不需要在程序启动的时候加上-platform linuxfb3、注意在QT5中使用的QPA,而的QT4中是QWS,所以原来设置QWS的环境变量在QT5中都不会起作用。4、我写了一个简单的界面程序就是一个界面两个按钮使用了91%的内存,在32926中实现的,几乎不能做其它工作,因此按楼主做法只是体验一下QT5,并不能用。
阅读(1929)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'【转载】Qt5.2.1移植新唐n32905测试 转的一位朋友的过程,基本能够通过。',
blogAbstract:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 qmakespec设置 的文章

 

随机推荐