Qt移植说明文件
QT移植到dm6446
QT移植到dm6446师兄让我作达芬奇系统下的一个界面程序,听说QT不错,所以几天前就试着把QT移植到dm6446上来。
去TI的论坛看了一个在omap3上的移植教程,看起来也不难,于是开始了我的移植过程。
1 首先去/downloads下载最新的QT原代码包:qt-everywhere-opensource-src-4.6.4.tar.gz可以将其放在/tmp目录下,然后解压/tmp$ tar zxvf qt-everywhere-opensource-src-4.7.3.tar.gz2 解压后,进入安装目录,然后需要配置交叉编译环境,由于dm6446用的不是普通的arm 编译器,所以要配置自己的交叉编译环境首先进入mkspecs/qws/目录/tmp/qt-everywhere-opensource-src-4.7.3$ cd mkspecs/qws/然后复制一下原来的linux-arm-g++目录到linux-dm6446-g++/tmp/qt-everywhere-opensource-src-4.7.3/mkspecs/qws$ cp -r linux-arm-g++ linux-dm6446-g+ +修改linux-dm6446-g++目录下的qmake.conf文件,将所有的arm-linux-替换成arm_v5t_le-,然后保存/tmp/qt-everywhere-opensource-src-4.7.3/mkspecs/qws$ cd linux-dm6446-g++//tmp/qt-everywhere-opensource-src-4.7.3/mkspecs/qws/linux-dm6446-g++$ vi qmake.conf在vi中,在命令模式下输入:%s/arm-linux-/arm_v5t_le-/g进行替换,然后输入:wq保存退出。
3 回到QT安装目录,进行QT的配置。
图形界面程序Qt安装及其在2410-s上的移植
学习笔记----图形界面程序Qt安装及其在2410-s上的移植学习笔记----图形界面程序Qt安装及其在2410-s上的移植本文主要内容为编译器的安装,安装与建立Qt 桌面运行环境,Qt/E 的交叉编译,建立本机Qtopia 虚拟平台,Qtopia 2.1.1 在2410-S 上的移植.预备:编译器安装编译器: arm-linux-gcc-3.4.1.tar.bz2(软件从网上下载,如果不知道从什么地方下载,google就是了。
)把软件arm-linux-gcc-3.4.1.tar.bz2拷贝到/usr/local下,在终端执行如下命令安装:tar -xjf arm-linux-gcc-3.4.1.tar.bz2生成的编译工具在目录/usr/local/arm/3.4.1/bin下,修改/etc/profile,增加如下一行。
这可以让我们直接运行arm-linux-gcc,而不必将其绝对路径都写出来,不过这得重新启动后才生效:pathmunge /usr/local/arm/3.4.1/bin硬件:UP-NETARM2410S一. 安装与建立Qt 桌面运行环境软件:PC 机操作系统REDHAT LINUX 9.0 +MINICOM +ARM-LINUX 开发环境tmake-1.13.tar.gz qt-embedded-2.3.10-free.tar.gzqt-x11-2.3.2 .tar.gz软件从网上下载,如果不知道从什么地方下载,google就是了。
把本次实验用到的三个文件拷贝到/root/2410sQt目录下,以下的步骤是假设你在/root/2410sQt 下操作的。
Qt/Embedded 平台的搭建需要以下几步:第一步,解压安装包并设置环境变量tar –xzvf tmake-1.13.tar.gztar –xzvf qt-x11-2.3.2.tar.gztar –xzvfqt-embedded-2.3.10-free.tar.gzmv qt-2.3.10 qt-2.3.10-hostexportTMAKEDIR=$PWD/tmake-1.13export QT2DIR=$PWD/qt-2.3.2export QTEDIR=$PWD/qt-2.3.10-host环境变量的设置是非常重要的,它关系到能否正确的安装及编译这些安装包.注意: 在以下安装中,make命令执行前先执行一下make clean命令.第二步,编译Qt/Embedded。
4418的4G模块在QT文件系统的移植_EC20
迅为Qt移植移动4G模块第一部分1.首先要配置内核,这个一步和Android系统移植3G或者4G模块是一样的。
一般模块的厂家会提供移植文档,按照文档配置内核的ppp协议,USB转串,wcdma等,添加PID VID 即可。
这一步严格按照模块内核修改就行。
这里主要分析qt文件系统的修改,对内核不做过多的分析。
配置好的内核在开机后可以在dev下找到ttyUSB0-3的设备节点。
2.准备工作;下载ppp-2.4.4.tar.gz,这个我会上传。
①.解压:tar -vxf ppp-2.4.4.tar.gz。
②.运行configure,生成Makefile:./configure③.编译输入命令:make CC=arm-none-linux-gnueabi-gcc-4.4.1这里说明一下,CC=arm-none-linux-gnueabi-gcc-4.4.1是指明编译器,这里可以输入arm 然后双按tab键找自己的交叉编译器。
经过以上三步就会分别在chat、pppd、pppdump、pppstats中生成四个可执行文件chat、pppd、pppdump、pppstats,用于拨号。
3.以下操作是在qt文件系统,这里使用迅为提供的qt文件系统:rootfs.tgz①.解压rootfs.tgz:tar -vxf rootfs.tgz②.在etc中新建文件夹ppp③.把上面生成的四个可执行文件chat、pppd、pppdump、pppstats拷贝到ppp里面。
4.写配置文件①.在etc/ppp下文件pap-secrets:vim pap-secrets②.输入# Secrets for authentication using PAP# client server secret IP addressescard * card *在4G信号在通信时候有一个密码的比对,密码对了就可以通信了。
上面显示用户是card 密码是card③.在etc/ppp下新建文件夹peers:mkdir peers在peers里面新建文件wcdma:vim wcdma输入:# /etc/ppp/peers/wcdma# This is pppd script for China liantong# Usage: root>pppd call wcdmahide-passwordnoauthconnect '/etc/ppp/chat -s -v -f /etc/ppp/peers/wcdma-chat-connect' disconnect '/etc/ppp/chat -s -v -f /etc/ppp/peers/wcdma-chat-disconnect' debug/dev/ttyUSB2115200defaultroutenoipdefaultnovjnovjccompnoccpipcp-accept-localipcp-accept-remotelocallockdumpnodetachuser "card"password "card"crtsctsremotename 3gpppipparam 3gpppusepeerdns这里需要注意的是/dev/ttyUSB2,这句话要根据自己的情况而定,4G模块手册上应该会有些那个是用于AT指令,ppp拨号的。
飞凌2440QT移植
QT4移植到FL2440开发板的详细过程(转载并加以修改)不知道是大家的系统环境不同还是网友们打错字了,我在网上找了不下十篇有关QT移植的文档。
文档大部分相同,但有一些不一样,但我全都试了,都有一些小问题!后来我一篇文档为主,其他文档为辅,对比错误,修改文档,得出这个适合我自己移植QT的完整版,这供大家参考!因为我的板子是飞凌的2440开发板。
网上关于qt4移植到飞凌2440的文章并不是很多,其中移植这部分我也走了很多弯路,遇到很多问题,但最后还是搞出来了,其实这过去也有快一个月了,那个时候也没时间写文章,但为了跟大家一同学习,今天特花了点时间把前面的经验写下来,希望能帮到各位,好了下面就开始我们的移植之旅吧!一、系统环境(蓝色是我的配置)宿主机:window xp sp3虚拟机linux centOS 或者fedora9,10linux编译器(交叉编译器):arm-linux-gcc 3.4.1开发板:飞凌2440--LCD 3.5寸系统linux-2.6.24(2.6.28也可以)2.6.12文件系统为yaffs系统所需软件包:arm-linux-gcc-3.4.1.tar.bz2 下载地址:/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2qt-embedded-linux-opensource-src-4.5.3.tar.gz下载地址大家到网上搜一下就出来了。
tslib-1.4.tar.gz(用于触摸验证)说明:说明一下这里为什么选择这些软件,首先fl2440板子需要编译器可以是2.95.3也可以使3.4.1这里我只是试了这两个,可能其他的也可以。
而qt/embeded则是我随便下了一个。
补充:这里为了说的完整些,我把qt的各版本也给大家说一下,关于Qt,Qt/E,Qtopia Core, Qtopia。
Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等。
Ubuntu下qwt安装及移植
Ubuntu下qwt安装及移植1.解压下载的qwt包:sudo tar –jxvf qwt-6.0.0.tar.bz22.cd qwt-6.0.03.环境变量设置:我们编译了两个版本的qt(x86版本和arm版本),如果在PC上运⾏,就需要⽤PC版本的qmake,arm上运⾏,就要⽤arm版本的qmake,具体做法:(1)Arm版本:① Sudo gedit ~/.bashrc在其中加⼊设置语句:exprot QTEDIR=/opt/arm/qtexport PATH=/opt/arm/qt/bin/:$PATHexport LD_LIBRARY_PATH=/opt/arm/qt/lib:$LD_LIBRARY_PATH②sudo gedit /etc/profile 在其中加⼊arm-Linux-gcc的路径:export PATH=/*/bin/:$PATH(2)X86的同样道理:注意:两个版本的都需要编译。
4.qmake –v查看qmake版本sudo make//编译出现错误,是关于⼀些Designer的头⽂件找不到,因为qwt⾃定义了⼀些designer的插件,⽅便我们进⾏开发,所以需要⼀些Qt Designer的头⽂件,打开qwtconfig⽬录下的qwtconfig.pri配置⽂件,屏蔽designer的编译。
有这条语句:CONFIG += QwtDesigner加“#”注释掉。
然后再编译就通过了。
另外,qwtconfig.pri⽂件中有以下⼀句:#CONFIG += QwtExamples这就是说⼯程默认是不编译⽰例程序的,要编译的话,就去掉注释,OK,编译完后会在qwt-5.2.1/examples⽬录下⽣成bin⽬录,下⾯就都是⽰例程序。
sudo make install5. 将⽣成的库⽂件变为全局可⽤cd /usr/local/libsudo ln -s /usr/local/qwt-6.0.1/lib/libqwt.so.6 libqwt.so.6sudo ldconfig//注意最后的ldconfig,是重新载⼊动态链接库的意思。
在HI3531上移植和运行QT4.8.6
在HI3531上移植和运行QT4.8.61、前言:近段有点时间,想把QT移植到HI3531上,在网上查找了很多资料,但都不是很全面,有些有问题也没有得到很好的体现。
2、环境:PC:ubuntu10.04HI3531交叉工具链:arm-hisiv100nptl-linux-QT版本:qt4.8.6(Qt libraries 4.8.6 for embedded Linux (230 MB)QT-Creator版本:qt-creator-linux-x86-opensource-2.4.1.bin3、交叉编译:1)进入qt-everywhere-opensource-src-4.8.6/mkspecs/qws目录,新建linux-hisi3531nptl-g++目录,复制linux-arm-g++目录下的所有文件到linux-hisi3531nptl-g++cp –a linux-arm-g++/* linux-hisi3531nptl-g++2)进入linux-hisi3531nptl-g++,修改文件qmake.conf# modifications to g++.confQMAKE_CC = arm-hisiv100nptl-linux-gccQMAKE_CXX = arm-hisiv100nptl-linux-g++QMAKE_LINK = arm-hisiv100nptl-linux-g++QMAKE_LINK_SHLIB = arm-hisiv100nptl-linux-g++# modifications to linux.confQMAKE_AR = arm-hisiv100nptl-linux-ar cqsQMAKE_OBJCOPY = arm-hisiv100nptl-linux-objcopyQMAKE_STRIP = arm-hisiv100nptl-linux-strip3)打开文件qplatformdefs.h增加#undef O_CLOEXEC此处主要为解决:编译过程中找不到accept4函数问题4)安装X11库sudo apt-get install libX11-dev libXext-dev libXtst-dev5)返回源码目录qt-everywhere-opensource-src-4.8.6进行配置./configure --prefix=/opt/qt4.8.6 -opensource -confirm-license -qt-sql-sqlite -qt-gfx-linuxfb -plugin-sql-sqlit -no-qt3support -no-phonon -no-svg -no-webkit -no-javascript-jit -no-script -no-scripttools -no-declarative -no-declarative-debug -qt-zlib -no-gif -qt-libtiff -qt-libpng -no-libmng -qt-libjpeg -no-rpath -no-pch -no-3dnow -no-avx -no-neon -no-openssl -no-nis -no-cups -no-dbus -embedded arm -platform linux-g++ -xplatform qws/linux-hisi3531nptl-g++ -little-endian -qt-freetype -no-opengl -no-glib-nomake demos -nomake examples -nomake docs -nomake tools其中:--prefix=/opt/qte4.8.6 为交叉编译目标安装目录-xplatform qws/linux-hisi3531nptl-g++指定编译器及平台配置信息5)make6)make install4、PC编译:1)重新解压qt-everywhere-opensource-src-4.8.6.tar.gz,进行PC编译2)./ configure3)make4)make install5、安装QT开发环境1)sudo ./qt-creator-opensource-linux-x86-2.4.1.run2)下一步直到安装完成3)在应用程序,就可以看到QT Creator6、配置开发环境1)从PC的QT安装目录中拷贝如下文件到交叉编译目录cp /usr/local/Trolltech/Qt-4.8.6/bin/qml* /opt/qt4.8.6/bin/2)打开QT Creator3)打开工具-选项-QT版本4)打开添加按键,添加交叉编译的qmake5)进入工具链,打开添加按键,选择GCCE,在编译器路经选择arm-hisiv100nptl-linux-g++的路经到些就可以编译QT下自带的例子chip了,但这时在HI3531上还是不能显示的。
移植QT5.6到嵌入式开发板(史上最详细的QT移植教程)
移植QT5.6到嵌⼊式开发板(史上最详细的QT移植教程)⽬前⽹上的⼤多数 QT 移植教程还都停留在 qt4.8 版本,或者还有更⽼的 Qtopia ,但是⽬前 Qt 已经发展到最新的 5.7 版本了,我个⼈也已经使⽤了很长⼀段时间的 qt5.6 for windows ,本⽂就来介绍⼀下QT在嵌⼊式环境的搭建。
移植以到 JZ2440 为例,使⽤韦⽼⼤提供的 ubuntu9.10 虚拟机作为移植环境。
当然,其它虚拟机也是可以的,我同样在 ubuntu14.04 移植成功,只不过需要额外装⼀些库,后⾯我会简单提及。
此外,我尝试使⽤ 4.3.2 版本的交叉编译⼯具编译 Qt5.6 ,编译过成功很多错误,编译成功之后使⽤ qt 编译应⽤程序时也存在问题,因此我是⽤的是友善提供的 4.4.3 版本的交叉编译⼯具。
建议新⼿使⽤与我相同的编译环境。
因为我们更换了编译⼯具,因此,我们有接下来的4个⼯作。
1、重新编译内核2、制作⽂件系统3、移植tslib4、移植qt⼀、更换交叉编译器⾸先,将下载好的⽂件全部放在 /work ⽬录下1、解压交叉编译器sudo tar zxvf arm-linux-gcc-4.4.3.tar.gz -C / #展开在根⽬录ls /opt/FriendlyARM/toolschain/4.4.3/bin #检查是否⽣成了编译⽬录2、设置环境变量sudo vi /etc/environment将现在原有的交叉编译器路径替换为我们新解压的交叉编译器,举例:1. #PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin"//注释2. PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/FriendlyARM/toolschain/4.4.3/bin" //增加后期测试时我发现这⾥是有问题的,由于我的安装⽬录都指定的是 usr ⽬录,需要 root 权限,然⽽在 environment 中设置的环境变量导致使⽤ root 权限 make install 过程中出现了个别的 command not found ,于是我将环境变量放到了 /etc/profile 中,这个⽂件是对所有⽤户⽣效的。
QT4编程及移植详细教程
QT4编程及移植(系统移植之3)一、搭建Qt-creator环境QT开发工具被诺基亚收购后,由诺基亚对齐进行维护和技术支持。
目前诺基亚已经开发出一套界面整洁功能强大的QT IDE开发环境——QT-creator。
由于大多数人仍习惯Windows系统下的软件开发和设计,一下将以QT-creator Windows版本环境作为介绍(当然IDE也有Linux版本)。
1.1下载并安装QT-creator从网上下载qt-sdk-win-opensource-2010.02.1.exe文件,并在Windows下将其安装好。
1.2新建工程打开Qt Creator,点击File->new file or project,弹出以下窗口:点击Qt4 Gui Application->OK,弹出以下窗口:输入工程名、选择保存路径,点击Next,弹出以下窗口:这里是选择第三方库的支持,我们这个工程不需要这些,直接点击Next,弹出以下窗口:在Base class中选择QWidget,表示窗口部件以QWidget为基类,然后点击Next,弹出以下窗口:然后点击Finish完成工程创建,创建好的工程如下:双击打开main.cpp,编写代码如下:#include <QtGui/QApplication>#include <QHBoxLayout>#include <QSlider>#include <QSpinBox>#include "widget.h"int main(int argc, char *argv[]){QApplication a(argc, argv);//管理整个应用程序用到的资源QWidget *window = new QWidget;//创建一个QWidget,父窗口部件是QWidget window->setWindowTitle("Enter Your Age");//设置QWidget的标题QSpinBox *spinBox = new QSpinBox;//创建QSpinBoxQSlider *slider = new QSlider(Qt::Horizontal);//创建QSliderspinBox->setRange(0,130);slider->setRange(0,130);//以下两句关联信号和槽QObject::connect(spinBox,SIGNAL(valueChanged(int)),slider,SLOT(setValue(int)));//以下两句使同步显示QObject::connect(slider,SIGNAL(valueChanged(int)),spinBox,SLOT(setValue(int)));spinBox->setValue(35);//初始化//以下做布局处理QHBoxLayout *layout = new QHBoxLayout;//水平排列,从左到右layout->addWidget(spinBox);layout->addWidget(slider);window->setLayout(layout);//在窗口上安装布局管理器window->show();//让窗口显示return a.exec();//将应用程序的控制权传递给QT}点击Qt Creator左下角的运行按钮(即第一个绿色三角形):显示效果如下:到这里已经完成了一个QT工程。
linux +qt4.7+opencv2.2移植到tq2440开发板
linux +qt4.7+opencv2.2移植到tq2440开发板以下操作在Fedora下使用超级用户进行我已经安装了交叉编译器arm-linux-gcc 4.3.3和qt4.5的x86和arm版本在目录/opt/EmbedSky下。
修改配置文件/etc/profile 添加pathmunge /opt/EmbedSky/4.3.3/bin安装CMakeOpenCV 2.1的版本,必须使用CMake创建Makefile。
我使用的CMake版本是2.6-Linux-i386的,是fedora 通过软件添加和载卸功能添加的(这个cmake要重新安装,而且要添加bin进去路径)编译OpenCV:1、解压OpenCV 2.1到/opt/EmbedSky/OpenCV-2.1.0目录下2、在超级用户下,运行cmake-gui命令选择源代码目录:/opt/EmbedSky/OpenCV-2.1.0选择Build目录:/home/pww71/opencv-arm/点击Configure,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next Operating System填写arm-inuxC Compilers选择/opt/EmbedSky/4.3.3/bin/arm-linux-gccC++ Compilers选择/opt/EmbedSky/4.3.3/bin/arm-linux-g++程序库的Target Root填写/opt/EmbedSky/4.3.3/,然后点击Finish修改默认配置,X86-opencv的cmake配置添加BUILD_EXAMPLES 和OPENCV_BUILD_3RDPARTY_LIBS 前面的日志已经介绍过了arm-opencv的cmake配置不要加BUILD_EXAMPLES 和OPENCV_BUILD_3RDPARTY_LIBS 和去掉WITH_TIFFCMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrtx86的opencv默认安装目录为/usr/local,对于arm的交叉编译的库来说并不合适,所以把CMAKE_INSTALL_PREFIX变量改为/usr/local/arm/lib/opencv/没有安装tiff图像的支持,去掉WITH_TIFF点击Generate生成Makefile3、使用超级用户进入目录/home/pww71/opencv-arm,运行make编译opencv4、运行make install,将opencv生成的库和头文件安装到目录/usr/local/arm/lib/opencv/QT的配置已经解压和安装了qt4.5的x86的库和arm交叉交叉编译的库安装qtcreator时记得安装地址并且修改配置文件/etc/profile 添加上qtcreator的安装地址的bin目录我的是pathmunge pathmunge /opt/EmbedSky/qtcreator-1.3.0/bin为了能找到qmake 还要添加路径pathmunge /opt/EmbedSky/qt-4.5/_install/x86/binpathmunge /opt/EmbedSky/qt-4.5/_install/am/bin到配置文件/etc/profile中使用超级用户输入命令source /etc/profile 后再执行qtcreator命令打开Qtcreator界面进入Tools-Options左侧选择QT4-Qt Versions 右侧选项里:如果通过软件添加和载卸工具添加了qt4的话Auto-detected会自动的选择Qt in PATH /usr/local/bin/qmake-qt4 用这个qmake工具生成的可执行文件不用添加-qws命令行参数自己安装的qt4.5 我是如下配置Qt in PATH /opt/EmbedSky/qt-4.5/_install/arm/bin/qmake添加Manual x86-qt-4.5.0 /opt/EmbedSky/qt-4.5/_install/x86/bin/qmake生成的可执行文件需要添加-qws命令行参数分别点击rebuild 最后点击okBuild Settings 中根据需要Add刚才配置的选择BUild configuration for ... 也选择相应的选项在QT工程文件.Pro中添加以下内容INCLUDEPATH += /usr/local/include/opencvLIBS += /usr/local/lib/libcv.so \/usr/local/lib/libcvaux.so \/usr/local/lib/libcxcore.so \/usr/local/lib/libhighgui.so \/usr/local/lib/libml.sopc仿真必须将以上库还要添加到项目文件夹里如果是arm开发板的程序则添加以下内容INCLUDEPATH += /usr/local/arm/lib/opencv/include/opencvLIBS += /usr/local/arm/lib/opencv/lib/libcv.so \/usr/local/arm/lib/opencv/lib/libcvaux.so \/usr/local/arm/lib/opencv/lib/libcxcore.so \/usr/local/arm/lib/opencv/lib/libhighgui.so \/usr/local/arm/lib/opencv/lib/libml.so编译生成可执行文件移植到开发板提示缺少什么库就按提示添加相应的图像库到lib中以及qt4.5的库和字体都添加到相应的目录中中间有一个这个提示QWSDisplay::Data::init: Invalid argumentClient can't attach to main ram memory.Aborted这个是表示缺少命令行参数-qws是Qt4的问题运行命令添加该参数ok一切正常注意的是qtcreator。
对于Qt4项目与Qt5项目移植时问题及解决方法
对于Qt4项⽬与Qt5项⽬移植时问题及解决⽅法1、Qt4项⽬迁移⾄Qt5项⽬:提⽰error:#include <QtGui/QApplication> No such file or directory原因:由于Qt5y源⽂件位置的改动.解决⽅法:①在.pro⽂件⾥,将Qt += core gui改为Qt += core gui widgets②.h⽂件⾥,#include <QtGui/QApplication>改为#include <QApplication>2、Qt4项⽬迁移⾄Qt5项⽬:提⽰error:’setCodecForTr’ is not a member of ‘QTextCodec’等错误.原因:由于Qt版本更新速度快,更新的同时有了许多的改动,在Qt5版本以前,很多⼈习惯⽤下⾯这三⾏(只要牵扯到中⽂,这三⾏就来了):QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));但是在Qt5中取消了:QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));解决⽅法:在程序中,main函数⾥将这两⾏代码注释掉就可以了.3、makefile 提⽰’multiple target patterns. Stop’原因:⼀般时由于Makefile中target那⼀⾏有多余的冒号(:),冒号在makefile中的作⽤是⽤于标识前⾯时⼀个编译的⽬标,如果有多余的冒号就会报错.解决⽅案:将程序中多余的冒号去掉即可.4、构建项⽬时报错:’QObject& QObject::(const QObject&)’ is private within this context.原因 :定义的是个QObject的⼦类,当将其的实例放⼊QT的容器(⽐如QList QHash等),就会报上⾯的错误.简单的说就是QObject的拷贝构造函数时私有的,当把其⼦类放⼊容器时⽆法完成构造其副本.解决⽅案:使⽤指针,将⾃定义的⼦类以指针的形式保存在容器中.⽐如:QList<MyObject *>list.5 qt5.x转为Qt4.8问题error:QtWidget/QAction:No such file or directory解决⽅法:将QtWidget换成QtGui6 qt5.x转为Qt4.8问题error:’class QHeader View’ has no member named ‘setSectionResizeMode’解决⽅法:是因为TableView之中的问题,在Qt5之后讲setResizeMode改成了setSectionResizeMode所以将section去掉即可7 qt5.x转为Qt4.8问题error:’itoa’ was not declared in this scope解决⽅法:itoa并⾮标准类库,将其换成sprintf(tmp,”%d”,i+1);⽤sprintf即可.8 qt5.x转为Qt4.8问题error:’QStingLiteral’ was not declared in this scope解决⽅法:问题出在TCPServerWindow->setObjectName(QStringLiteral(“TCPServerWindow”));这句话QT 4.8 setObjectName 没有QStringLiteral这个形参是QSTring 所以去掉这个QStringLiteral即可9 qt5.x转为Qt4.8问题error:‘Qt_5_6’ is not a member of ‘QDataStream’解决⽅法:当然Qt4.8怎么会有5.6 改成4.8以下即可10 构建项⽬时报错:error: 'staticMetaObject' is not a member of 'ygbaseprotocol'解决⽅法:在定义类时增加继承⾃QObject,如下:class ygbaseprotocol:public QObject{Q_OBJECT}。
Qt移植学习之路 QT4.5.3至mini2440
Qt移植学习之路 QT4.5.3至mini2440(1)本文介绍的是Qt移植学习之路QT4.5.3至mini2440,终于成功移植QT 4.5.3至mini2440,并能运行QT自带的应用程序,总得来说还算很顺利,下面是我移植的全部过程。
首先,我交待一下我的开发环境:宿主机:Fedora9主机Gcc:gcc 版本 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC)交叉编译器:arm-linux-gcc-4.3.2 (友善光盘自带)开发板:mini2440(NAND 128M SDRAM 64M)移植步骤:1.准备源码包从ftp:///qt/source/ 下载:qt-embedded-linux-opensource-src-4.5.3.tar.gz和qt-x11-opensource-src-4.5.3.tar.gz前者是移植到开发板上运行的,后者是方便在X86机上开发应用程序,待一切调试成功再经交叉编译后下载到开发板上运行。
从网上下载tslib-1.4.tar.gz包,这包用于管理触摸屏,例如可用于它来校正触摸屏,并保存校正数据。
2.编译安装tslib-1.4把tslib-1.4 COPY到Fedora9的 /opt下,在Fedora9的终端下执行:1.#cd/tmp2.#tarzxvftslib-1.4.tar.gz――――――――(最后在/tmp下解压生成tslib)3.#cdtslib4.#./autogen.sh5.#./configure--prefix=/home/mytslib/--host=arm-linuxac_cv_func_malloc_0_nonnull=yes6.#make7.#makeinstall成功后可在/home下生成mytslib,进入mytslib可以看到有bin include lib etc 四个文件夹。
我们暂时先不理它,在接下来的移植过程中才用到这些文件夹。
qt程序移植到arm开发板
qt程序移植到arm开发板1、安装交叉编译⼯具链arm-linux-gcc●复制arm-linux-gcc-4.4.3.tar.gz到/home/tools⽂件夹⾥●解压命令tar xvzf arm-linux-gcc-4.4.3.tar.gz -C / (解压⽂件到根⽬录下)注意以上命令必须要有-C⽽且是⼤写,后边有个空格也要注意。
注意查看解压的路径,将解压⽣成的⽂件移动到usr/local/arm⽬录下●vi /etc/profile●在⽂件的末尾加上PATH=/usr/local/arm/4.4.3/bin:$PATH●输⼊命令:source /etc/profile(使刚修改的⽂件⽴即⽣效)●查看arm-linux-gcc版本arm-linux-gcc -v注意:此⽅法只对当前登录⽤户有效,更换⽤户后修改当前登录⽤户/etc/profile即可2、tslib编译与安装tslib是电阻式触摸屏⽤于校准的⼀个软件库,是⼀个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应⽤提供了⼀个统⼀的接⼝。
因此这⾥先编译安装tslib,这样在后⾯编译Qt的时候才能打包编译进去。
●需要检查⼀下软件是否安装sudo apt-get install automakesudo apt-get install autogensudo apt-get install autoconf●确定以上⼯具都已经安装后,复制tslib-1.4.tar到/home/tools⽂件夹⾥tar -zxvf tslib-1.4.tar.gzcd tslib./autogen.sh./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/usr/local/tslibmakemake install-prefix=/usr/local/tslib是指定安装路径,其实包括下⽂的安装配置,路径都可以不指定,默认就是安装到/usr/local/⽬录下若出现错误:configure.ac:25: error: possibly undefined macro: AC_DISABLE_STAT ICIf this token and others are legitimate, please use m4_pattern_al low.See the Autoconf documentation.configure.ac:26: error: possibly undefined macro: AC_ENABLE_SHARE Dconfigure.ac:27: error: possibly undefined macro: AC_LIBTOOL_DLOP ENconfigure.ac:28: error: possibly undefined macro: AC_PROG_LIBTOOL autoreconf: /usr/bin/autoconf failed with exit status: 1解决⽅法:apt-get install libtool3、Qt的交叉编译与安装和PC平台下的编译类似,通过运⾏./configure进⾏配置⽣成makefile⽂件,然后编译安装,只是因为是针对嵌⼊式平台需要进⾏⼀些针对性配置,这⾥⽣成⼀个⾃动配置⽂件,可以通过修改⽂件来⽅便的更改配置。
移植Qt5.5到arm开发板(全世界的问题我一个人碰完了)
移植Qt5.5到arm开发板(全世界的问题我一个人碰完了)展开全文https:///qq_41399894/article/details/8647547 2前面安装Qt的步骤就不说了,下载好一路next就可以了,接下来一、首先要移植Qt必须要用到Qt的源码,在这里也是用Qt5的源码来移植。
源码可以在/archive/qt/下载,选择文件qt-everywhere-opensource-src-5.5.0.tar.gz下载。
2、把下载好的文件放在ubutun的/myTools/Qt/目录下,执行命令 tar zxvf qt-everywhere-opensource-src-5.5.0.tar.gz 来解压,解压完成后就会看到 qt-everywhere-opensource-src-5.5.0 目录。
3、接着就是开始进行编译的工作了。
首先进去目录/myTools/Qt/qt-everywhere-opensource-src-5.5.0/qtbase/mkspecs/linux-arm-gnueabi-g++ ,在这个目录下回看到qmake.conf文件,我们需要修改这个文件。
vim qmake.conf#qmake configuration for building with arm-linux-gnueabi-g++#MAKEFILE_GENERATOR = UNIXCONFIG += incrementalQMAKE_INCREMENTAL_STYLE = sublibQT_QPA_DEFAULT_PLATFORM = linuxQMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a // march是处理器架构,我的是armv7-aQMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-ainclude(../common/linux.conf)include(../common/gcc-base-unix.conf)include(../common/g++-unix.conf)#modifications to g++.confQMAKE_CC = arm-none-linux-gnueabi-gccQMAKE_CXX = arm-none-linux-gnueabi-g++QMAKE_LINK = arm-none-linux-gnueabi-g++QMAKE_LINK_SHLIB =arm-none-linux-gnueabi-g++# modifications to linux.confQMAKE_AR = arm-none-linux-gnueabi-ar cqsQMAKE_OBJCOPY =arm-none-linux-gnueabi-objcopy QMAKE_NM = arm-none-linux-gnueabi-nm -PQMAKE_STRIP = arm-none-linux-gnueabi-stripload(qt_config)如果这里.对芯片的指令集没有选择好QT_QPA_DEFAULT_PLATFORM = linuxQMAKE_CFLAGS_RELEASE += -O2 -march=armv7-aQMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a在开发板运行过程中,运行有提示:Illegal instruction (非法指令)这里要注意,每个人的交叉编译器的前缀都是不一样的,我的就是arm-none-linux-gnueabi-,需要注意还有就是如果你有多个交叉编译器,那么这里你要设置为绝对路径然后去解压目录下,即是/myTools/Qt/qt-everywhere-opensource-src-5.5.0/,每个人存放的目录都不要,这里我是直接运行./configure -prefix /opt/qt-5.5 -release -opensource -xplatform linux-arm-gnueabi-g++ -no-opengl这里你会发现,在运行结束后,会提示你需要你添加一句qreal float的意思,xplatform linux-arm-gnueabi-g++ -no-opengl -qreal float 我加上了之后,重新运行,提示我们make和make install,我make了之后Project ERROR: Unknown module(s) in QT: quickMakefile:47: recipe for target 'sub-textureandlight-make_first' failedmake[4]: *** [sub-textureandlight-make_first] Error 3make[4]: Leaving directory '/home/jay/qt-x11/qtcanvas3d/examples/canvas3d/canvas3d'Makefile:42: recipe for target 'sub-canvas3d-make_first' failedmake[3]: *** [sub-canvas3d-make_first] Error 2make[3]: Leaving directory '/home/jay/qt-x11/qtcanvas3d/examples/canvas3d'Makefile:42: recipe for target 'sub-canvas3d-make_first' failedmake[2]: *** [sub-canvas3d-make_first] Error 2make[2]: Leaving directory '/home/jay/qt-x11/qtcanvas3d/examples'Makefile:69: recipe for target 'sub-examples-make_first' failedmake[1]: *** [sub-examples-make_first] Error 2make[1]: Leaving directory '/home/jay/qt-x11/qtcanvas3d' Makefile:349: recipe for target 'module-qtcanvas3d-make_first' failedmake: *** [module-qtcanvas3d-make_first] Error 2这里的错误现象是百度复制过来的的,因为我编译成功了,不想卸了重装,但是问题大概就是这样,这个解决方法:你可以忽略它所找不到的,在后面加上xplatform linux-arm-gnueabi-g++ -no-opengl -skip qt3d -skip qtcanvas3d -nomake examples -skip qtdeclarative -no-icon 看到这个 -no-iconv,如果没有设置它,当你运行qt程序的时候,会出现QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failedQIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed所以一定要加上,如果你忘了添加,就(1) 下载链接:/gnu/libiconv/(2) 配置并安装安装./configure --prefix=/home/chy/out --host=arm-none-linux-gnueabi-gccmakemake install(3) 复制preloadable_libiconv.so到开发板的/lib目录,并配置在/etc/profile添加export LD_PRELOAD=/lib/preloadable_libiconv.so先make clean,清除之前生成的,再make,后面会出现就会出现../../include/QtCore/../../src/corelib/tools/qbytearray.h:98:19: note: the mangling of 'va_list' has changed in GCC 4.4 make[3]: *** [.obj/qpdf.o] 错误 1make[3]: *** 正在等待未完成的任务....make[3]:正在离开目录`/myTools/Qt/qt-everywhere-opensource-src-5.5.1/qtbase/src/gui'make[2]: *** [sub-gui-make_first] 错误 2make[2]:正在离开目录`/myTools/Qt/qt-everywhere-opensource-src-5.5.1/qtbase/src'make[1]: *** [sub-src-make_first] 错误 2make[1]:正在离开目录`/myTools/Qt/qt-everywhere-opensource-src-5.5.1/qtbase'make: *** [module-qtbase-make_first] 错误 2这里是因为前面提示我们添加-qreal float,而添加了之后就出现了这个问题相对文件是Qt源代码。
QT4到QT5
Qt4到Qt5移植过程之前移植了一个Qt4的工程,但是我的Qt版本是5.3,所以问题就出现了。
#include <QtGui/QApplication>报错:error: QtGui/QApplication: No such file or directory解决办法:在*.pro文件里添加:QT += widgets更改#include <QtGui>为#include <QtWidgets>即#include <QtGui/QApplication>更改为#include <QtWidgets/QApplication>因为Qt4采用QtGui库在Qt5已经采用了QtWidgets替代。
Qt窗口居中显示方法一:在窗口(QWidget类及派生类)的构造函数中添加如下代码:添加头文件:#include <QDesktopWidget>//.......QDesktopWidget* desktop = QApplication::desktop();// =qApp->desktop();也可以move((desktop->width() - this->width())/2, (desktop->height() -this->height())/2);//.......重新编译后,该窗口启动时在屏幕居中的位置。
(该方法没有采用,下一种方法更为便利)方法二:在调用show()函数后调用move()函数,j将窗口移动到屏幕中央。
具体程序范例:#include <QDesktopWidget>int main(int argc, char *argv[]){QApplication a(argc, argv);MainWindow w;w.show();w.move ((QApplication::desktop()->width() -w.width())/2,(QApplication::desktop()->height() - w.height())/2);return a.exec();}。
Hi3519AV100移植Qt5.9.9
Hi3519AV100移植Qt5.9.9起源:因为Hi3519AV100跑的是Linux系统,所以决定采⽤QT来做界⾯展⽰。
当前最新的QT版本是5.15,但是QT5.9是长期维护的版本,因此选择了QT5.9.9版本。
源码下载:在Qt官⽹上下载Qt5.9.9源代码解压源码tar xvJf qt-everywhere-opensource-src-5.9.9.tar.xz配置交叉编译器因为Qt5.9.9⽀持C++11,所以编译器版本需要⾼于4.8以上,我选择了6.3.1(因为给我们提供算法的公司采⽤的是这个版本-_-||)。
修改~/.bashrc ⽂件,在系统环境变量PATH中添加交叉编译器的路径。
(路径以实际路径为准)export PATH=/opt/hisi-linux/x86-arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabi/bin:$PATH执⾏命令source ~/.bashrc查看交叉编译器的路径是否已经添加到系统环境变量PATH中,可以通过查看交叉编译器版本号来进⾏判断。
arm-linux-gnueabi-gcc -v如果能正常显⽰交叉编译器的版本号,则证明配置成功!配置qmake.confcd /opt/Qt/qt-everywhere-opensource-src-5.9.9vi ./qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf因为我们现在⽤的交叉编译器名称正好和这个⽂件中的名称是⼀样的,所以不需要进⾏任何修改。
如果交叉编译器为“arm-himix200-linux-gcc”与默认的不⼀样,则将“arm-linux-gnueabi”全部替换为“arm-himix200-linux”配置⽣成MakeFile⽂件cd /opt/Qt/qt-everywhere-opensource-src-5.9.9./configure -prefix /opt/Qtlib/qt-5.9.9 -release -opensource -confirm-license \-platform linux-g++ -xplatform linux-arm-gnueabi-g++ \-qt-zlib -qt-libpng -qt-libjpeg -qt-freetype \-no-pch -no-avx -no-openssl -no-cups -no-dbus -no-opengl -no-glib \-skip qtwebchannel -skip qtcanvas3d \-evdev -nomake examples -nomake tests-prefix /opt/Qtlib/qt-5.9.9 指定最终的安装路径为/opt/Qtlib/qt-5.9.9;-platform linux-g++ 指的是你在什么机器上编译这些⽂件,⼀般都是ubuntu或者centeros,-xplatform指的是程序要运⾏在什么平台,linux-g++会⽤来编译⼀些使⽤⼯具,像⽣成.qch帮助⽂档的qhelpgenerator,xplatform则指定编译库代码时⽤的编译器,以及⽣成make所有的qmake⼯具;-xplatform 所指定的不是交叉编译⼯具链的名字,⽽是交叉编译配置⽂件的名字,该⽂件需在/opt/Qt/qt-everywhere-opensource-src-5.9.9/qtbase/mkspecs/⽬录下,可以拷贝linux-arm-gnueabi-g++,然后根据⾃⼰交叉编译⼯具修改qmake.conf;-qt-zlib -qt-libpng -qt-libjpeg -qt-freetype 这⼏个选项最好使⽤qt库⾃带的源码,不然如果系统上没有这个库或者找不到,⾃⾏编译这些库后再加⼊到相关路径上还需要为这些库写依赖⽂件才能使⽤,没有依赖⽂件,链接程序时会报⼀些插件找不到的错误;-evdev ⽤于⿏标键盘;编译和安装makemake install接下来就是漫长的等待,整个编译过程⼤概需要2个⼩时。
linux上移植qt经验分享
//公司ARM9平台
Linux version 2.6.39 (root@ubuntu) (gcc version 4.3.5 (Buildroot 2011.05) ) #74 Tue Jan 8 19:35:16 CST 2013
//虚拟机上的x86平台
libtool: Version mismatch error. This is libtool 2.2.6b, but the
libtool: definition of this LT_INIT comes from libtool 2.2.10.
libtool: You should recreate aclocal.m4 with macros from libtool 2.2.6b
/* Define to rpl_malloc if the replacement function should be used. */
#define malloc rpl_malloc
把上面的几句话删掉后重新编译,就正常了,交叉编译時autotools认为我的工具链的libc中不包含malloc和realloc,然后擅自做主张地替换成了rpl_malloc
此处显示gcc version 4.2.4 但实际中需要用 gcc version 4.3.5交叉编译才能运行,与系统移植时的命名有关。
液晶屏:10.4寸(800×600)
---------------------------------------------------------------------
export set TSLIB_CONSOLEDEVICE=none
qt项目导入流程
qt项目导入流程When it comes to importing a Qt project, the process can sometimes be confusing, especially for those who are new to the platform. However, with a bit of guidance and some patience, you can successfully import a Qt project without too much difficulty.说到导入Qt项目,这个过程有时候会让人感到困惑,特别是对于那些对这个平台不太熟悉的人来说。
但是,通过一点指导和一些耐心,你可以成功地导入一个Qt项目,而不会遇到太大的困难。
First, you'll need to have Qt installed on your computer. If you haven't already done so, you can download Qt from their official website and follow the installation instructions. Make sure to choose the version that is compatible with your operating system.首先,您需要在计算机上安装Qt。
如果您还没有这样做,您可以从他们的官方网站下载Qt,并按照安装说明进行安装。
确保选择与您的操作系统兼容的版本。
Once Qt is installed, you can proceed with importing your project. Open Qt Creator, which is the IDE (Integrated Development Environment) that comes with the Qt installation. From the menu, select "File" and then "Open File or Project". Navigate to the location of your project files and select the project file (usually with a .pro extension).一旦Qt安装完成,您可以继续导入您的项目。
qt movetothread(this)写法
在Qt中,将一个对象移动到另一个线程通常使用QObject::moveToThread()函数。
以下是一个简单的示例,演示了如何将当前对象(假设是一个继承自QObject 的类实例)移动到一个新的线程。
首先,你需要创建一个继承自QThread的类,并在该类中重写run()方法来定义线程的执行逻辑。
然后,你可以使用QObject::moveToThread()方法将一个对象移动到这个线程。
下面是一个示例代码:
在这个示例中,MyObject是一个简单的QObject子类,它有一个doWork()方法用于执行耗时操作。
MyThread是一个继承自QThread的类,它重写了run()方法来创建MyObject实例并将其移动到新线程。
当线程开始执行时,它会调用MyObject::doWork()方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一般而言,Qt应用程序的内容可分为Qt库的编译,Qt库的移植和基于Qt的应用程序的移植。
Qt库的编译所花费的耗线性时间代价是最长的,而Qt库的移植是比较简单的一个工作,只需要让串口发送数据到开发板上即可,笔者本人使用的是虚拟机提供的一个共享工具 wmwate-tools,在拷贝某些库的时候会出现不可以预知的错误,重试也无法解决这个问题,解决办法在于把库目录打包共享,这样的出错几率会比较低。
最后,应用程序的移植,这部分所花费的非线性时间应该是最长的,在移植调试的过程中将会出现很多很多未能预知的问题,详细的解答将会在本文末尾出做详细笔录。
1.编译的环境和所需要资源:Qt源码包:Qt4.6源码包:qt-everywhere-opensource-src-4.6.3.tar.gz /qt/source/qt-everywhere-opensourc e-src-4.6.3.tar.gz交叉编译工具: arm-linux-gcc 4.1.2 arm920t-eabi.tar.gz触摸屏校验工具: tslib1.4PC虚拟机运行的OS :CentOS-5.42.安装交叉编译器:主要是解压后要在设置交叉编译器的路径信息,即要为它设置一个环境变量。
把arm920t-eabi.tar.gz 放到/opt 目录下,解压该文件:# tar xzvf arm920t-eabi.tar.gz必须说明的是,网上转载该交叉编译器解压开来,产生的是一个/opt/toolchains/arm920t-eabi目录,在这里我们进行目录移动处理,把解压开来的/opt/toolchains/arm920t-eabi目录下面的/toolchains目录的所有内容剪切到系统/opt下面去,同时删除解压开来的/opt目录。
#gedit /root/.bashrc这是编辑/root/.bashrc文件的命令,在末行添加上交叉编译器的路径信息:使用source命令重新执行刚修改过的初始化文件,而不必重启机器。
# source /root/.bashrc#arm-linux-gcc -v 可以看到版本信息3.安装触摸屏校验工具:把tslib-1.4.tar.gz放到/opt目录下#tar xvzf tslib-1.4.tar.gz#cd tslib#./autogen.sh#./configure --prefix=/usr/local/tslib --host=arm-linux ac_cv_func_malloc_0_nonnull=yes#make#make install这样以后可以看到/usr/local/tslib下有了库文件,移植时会用到。
ps : host选项中malloc后面接着的是数字0,不是小写字母o.4.编译Qt-4.6.3库:首先要明确的是,我们需要编译3种不同类型的Qt库,这些库都由源码包qt-everywhere-opensource-src-4.6.3.tar.gz根据不同的配置选项编译而来。
# cd /opt把qt-everywhere-opensource-src-4.6.3.tar.gz复制到这个目录下面,并且解压成三份,并且重命名为Qt-4.6.3-pc,Qt-4.6.3-x86和Qt-4.6.3-arm。
另:图中FriendlyARM是新建的空目录,qtsdk-2010.04是QT Creator2.0的安装目录。
Toolchains是交叉编译器的安装目录。
1)进入qt-4.6.3-pc目录,直接运行configure信息并且编译,安装应用Qt库,在默认的情况下将会在/usr/local/Trolltech目录下生成Qt-4.6.3库目录。
# ./configure# gmake# gmake install修改.bashrc信息编译出来的基于PC机的Qt源码包大概是3.2 GB左右, Qt库大概是900+M本次编译出来的是914M,如果中间有出现什么情况终止了编译,那一定是一些系统库或者是工具没有安装好,在虚拟机装载系统的时候可以选择把大部分工具都装载进来。
2)进入qt-4.6.3-x86目录,输入编译嵌入式Qt库配置命令,并且进安装,在默认的情况下,将会在/usr/local/Trolltech产生嵌入式Qt库:QtEmbedded-4.6.3。
# ./configure -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb-qt-mouse-qvfb# gmake# gmake install安装下来的嵌入式Qt包大概有2.8G,Qt库大概是接近1G。
3)进入qt-4.6.3-arm目录,输入编译基于arm处理器的配置命令。
# ./configure -prefix/usr/local/Trolltech/QtEmbedded-4.6.3-arm -opensource-confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-g++ -depths 16,18,24 -fast -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -little-endian -host-little-endian -no-qt3support -no-libtiff -no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow-no-webkit -no-qvfb -no-phonon -no-nis -no-opengl -no-cups-no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender-no-separate-debug-info -nomake examples -nomake tools -nomake docs -qt-mouse-tslib -I/usr/local/tslib/include-L/usr/local/tslib/lib# gmake# gmake install编译顺利结束以后,将会在/usr/local/Trolltech/QtE-4.6.3-arm目录下面产生基于ARM处理器平台的Qt库,73M。
下图是编译出来的Qt库的一个容量信息。
在基于ARM的嵌入式版本的QT4安装成功以后,为了进行交叉编译,即在我们的PC机x86处理器上生成另一个处理器ARM可执行的文件,为此,需要一个脚本的文件的引导,内容如下:每次进行交叉编译之前,都必须执行这个脚本,执行命令如下:# source setenv-embedded.sh5.Qt库的移植:在对开发板的所有操作都必须在PC机的超级终端下完成,在超级终端上对各种文件的操作就是对基于ARM的嵌入式系统的操作。
在开发板的跟目录下新建两个目录:# mkdir mini2440# mkdir tslib不管用什么方法,可以选用串口或者是SD卡传输,把PC机下面的/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib目录下面的所有文件全部拷贝过来开发板的/mini2440目录下面,同时,把触摸屏校验工具的安装目录/usr/local/tslib下面所有的内容都拷贝到开发板的/tslib目录下面去。
在开发板上修改/tslib/etc下的ts.conf #module_raw input去掉#然后,删除多余的空格修改相关的环境变量信息:# vi /etc/profile在该文件末尾处输入如下环境变量信息:#export QTDIR=/mini2440#export T_ROOT=/tslib#export PATH=$QTDIR/bin:$PATH#export TSLIB_CONSOLEDEVICE=none#export TSLIB_FBDEVICE=/dev/fb0#export TSLIB_TSDEVICE=/dev/input/event0#export TSLIB_PLUGINDIR=$T_ROOT/lib/ts#export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf#export TSLIB_CALIBFILE=/etc/pointercal#export QWS_MOUSE_PROTO=tslib:/dev/input/event0 #export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib6.应用程序的移植:首先,进入PC机开发环境目录,即/opt/qt-4.6.3-pc,系统默认情况下已经使用了Qt库:Qt-4.6.3,若想改变所使用的Qt库,必须编写相关的脚本来指定所使用的Qt库。
# mkdir hello# cd hello# vi hello.cpp在hello.cpp中输入以下代码:#include <QApplication>#include <QPushButton>int main(int argc, char *argv[]){QApplication app(argc,argv);QPushButton b("Hello World !");b.show();QObject::connect(&b,SIGNAL(clicked()),&app,SLOT(quit() ));return app.exec();}执行一下命令:# qmake -project# make注:一、若qmake -project出现:程序“qmake”已包含在下列软件包中:* qt3-dev-tools* qt4-qmake请尝试:apt-get install <选定的软件包>那么要输入命令:apt-get install libqt4-dev安装qt的make工具该安装需在系统联网的情况下(配置联网参考,网络通信/总结(ubuntu的网络设置))二、或者加绝对路径/opt/qt-4.6.3-arm/bin/qmake –project 生成三、注:编译时要注意头文件的大小写(/opt/qt-4.6.3-arm/bin和/opt/qt-4.6.3-pc/bin中编译区别大小写,在/usr/local/Trolltech/QtEmbedded-4.6.3/bin/和/usr/local/Trolltech/QtEmbedded-4.6.3-arm/bin中不区别大小写)在make编译通过以后,在当前目录下将会产生一个名为hello的可执行文件,执行该可执行文件,将会在PC的显示器上显示出一个Hello world的GUI。