QTE移植疑惑的反义词求助

求教:QTE移植问题:can find_百度知道
求教:QTE移植问题:can find
我有更好的答案
qt.nokia.com/qt&#47,用于PC机上的仿真调试:/&#47。在qte-arm目录下编译arm架构的编译工具链,用于交叉编译在arm开发板上运行的程序。tar -zxvf qt-embedded-linux-opensource-src-4。须要说明的是:在qte-x86目录下编译x86架构的编译工具链.3;qte-x86&#47、安装qte的pc机的x86版本1.下载源程序configure -prefix /usr/local/qte-x86 -no-qt3support -system-zlib -system-libtiff -system-libpng -qt-libmng -system-libjpeg -make libs -make examples -make demos -no-nis -no-cups -no-iconv -xplatform qws/linux-x86-g++ -embedded x86 -depths 16.5;source/qt-embedded-linux-opensource-src-4。开发时可以先通过x86版本以及qvfb来调试,调试通过再编译成arm版本下发到开发板上即可,还有一个arm版本.3解压之后.gz 2.解压在/tmp目录下新建两个文件夹qte-x86和qte-arm.tar.33.进入/qt-embedded-linux-opensource-src-4.5.3,运行configure生成makefile.&#47,把里面的文件分别全部复制到qte-x86和qte-arm中。二;tmp&#47.5;ftp.5,将qt-embedded-linux-opensource-src-4一个是用于PC机调试的x86版本
电脑网络爱好者
为您推荐:
其他类似问题
qte的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)博客访问: 1139327
博文数量: 231
博客积分: 10
博客等级: 民兵
技术积分: 6156
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX 09:26:31
花了3天的时间将qte的开发环境以及arm版本移植好,花费的时间多主要是一些软件的依赖关系以及环境变量的配置,还有软件本身编译的时间很长,最后终于克服重重困难,把qte移植到了开发板上。其实不难,主要是要有耐心,会分析错误及上网查资料。下面说说我的移植过程:
编译了两个版本,一个是用于PC机调试的x86版本,还有一个arm版本。开发时可以先通过x86版本以及qvfb来调试,调试通过再编译成arm版本下发到开发板上即可。
二、安装qte的pc机的x86版本
1.下载源程序
ftp://ftp.qt.nokia.com/qt/source/qt-embedded-linux-opensource-src-4.5.3.tar.gz
在/tmp目录下新建两个文件夹qte-x86和qte-arm,将qt-embedded-linux-opensource-src-4.5.3解压之后,把里面的文件分别全部复制到qte-x86和qte-arm中。须要说明的是:在qte-x86目录下编译x86架构的编译工具链,用于PC机上的仿真调试。在qte-arm目录下编译arm架构的编译工具链,用于交叉编译在arm开发板上运行的程序。
tar -zxvf qt-embedded-linux-opensource-src-4.5.3
3.进入/tmp/qte-x86/qt-embedded-linux-opensource-src-4.5.3,运行configure生成makefile
./configure -prefix /usr/local/qte-x86 -no-qt3support -system-zlib -system-libtiff -system-libpng -qt-libmng -system-libjpeg -make libs -make examples -make demos -no-nis -no-cups -no-iconv -xplatform qws/linux-x86-g++ -embedded x86 -depths 16,24,32 -qt-gfx-qvfb -no-gfx-linuxfb -no-gfx-transformed -no-gfx-vnc -no-gfx-multiscreen -qt-kbd-usb -qt-kbd-tty -qt-kbd-qvfb -qt-mouse-pc -no-glib -qt-mouse-qvfb
3.1 出现如下错误:
The target system byte order could not be
Turn on verbose messaging (-v) to see the final report.
You can use the -little-endian or -big-endian switch to
./configure to continue.
解决方法:发现QMAKESPEC路径不对,设置export QMAKESPEC= /tmp/qte-x86/qt-embedded-linux-opensource-src-4.5.3/mkspecs/qws/linux-x86-g++
再./configure之后就成功。
4.编译 make
4.1出现如下错误:
image/qpnghandler.cpp:53:17: error: png.h:没有发现此文件
修改方法:找到该qpnghandler.cpp文件,打开后将原来的
#include <png.h>
#include <pngconf.h>
改为:直接到头文件目录下边,
#include "/tmp/qt-embedded-linux-opensource-src-4.5.3/src/3rdparty/libpng/png.h"
#include "/tmp/qt-embedded-linux-opensource-src-4.5.3/src/3rdparty/libpng/pngconf.h"
再make编译就能通过。
4.2出现如下错误:
/usr/bin/ld: cannot find –lpng
解决方法:sudo apt-get install libpng12-0 libpng12-dev
/usr/bin/ld:cannot find -lxxx
意思是编译过程找不到对应库文件。其中-lxxx表示链接库文件libxxx.so。
一般出现这种错误有以下几种原因:
1.系统缺乏对应的库文件
2.库文件版本不对应
3.库文件链接错误
4.库文件路径设置不正确
对于前2种情况,可以通过下载安装lib来解决:
sudo apt-get install libxxx-dev(上面编译Qt的情况大多是这样)
而对于第3种情况,通过find或者locate命令定位到链接文件,查看链接文件是否正确的指向了lib文件。如果不是,用 ln -sf */libxxx.so.x */libxxx.so 命令修改。
对于最后一种情况,可以到/etc/ld.so.conf.d目录下,修改其中任意一份conf文件(也可自建conf),将lib所在的目录写进去,然后在终端输入ldconfig更新缓存。
4.3又出现找不到头文件错误
#include <jpeglib.h>
#include "/tmp/qt-embedded-linux-opensource-src-4.5.3/src/3rdparty/libjpeg/jpeglib.h"
4.4之后又出现错误:
/usr/bin/ld: cannot find –ljpeg
解决方法:sudo apt-get install libjpeg62-dev
4.5又出现找不到头文件错误
#include "tiffio.h"改为
#include "/tmp/qt-embedded-linux-opensource-src-4.5.3/src/3rdparty//libtiff/libtiff/tiffio.h"
4.6然后出现错误
/usr/bin/ld: cannot find -ltiff
sudo apt-get install libtiff4 libtiff4-dev libtiffxx0c2
5.make install (安装到了/usr/local/qte-x86,最好事先建立该该文件夹)
三、安装qte的arm版本
1.下载源程序及解压,同上步骤
2.确认tslib已经安装好(参见tslib的安装)
3.修改交叉环境变量
在/usr/local/qt-4.7.3-linux-arm/mkspecs/qws/linux-arm-g++/qmake.conf文件中修改如下:
QMAKE_CC = /root/tools/arm-2009q1/bin/arm-none-linux-gnueabi-gcc
QMAKE_CXX = /root/tools/arm-2009q1/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK = /root/tools/arm-2009q1/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = /root/tools/arm-2009q1/bin/arm-none-linux-gnueabi-g++
QMAKE_AR = /root/tools/arm-2009q1/bin/arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = /root/tools/arm-2009q1/bin/arm-none-linux-gnueabi-objcopy
QMAKE_STRIP = /root/tools/arm-2009q1/bin/arm-none-linux-gnueabi-strip
QMAKE_INCDIR&&&& = /usr/local/tslib/include/
QMAKE_LIBDIR = /usr/local/tslib/lib/
4.修改系统环境变量
export QMAKESPEC=/tmp/qt-embedded-linux-opensource-src-4.5.3/mkspecs/qws/linux-arm-g++
这里还要注意PATH环境变量:(PATH环境变量错误也会导致下边configure时发生众多错误,很难改,我是重启了系统之后重新设置,之后才弄好)
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/qt/bin:/root/tools/arm-2009q1/bin:/root/tools
5.configure
./configure -prefix /usr/local/qte-arm -no-qt3support -qt-zlib -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake demos -nomake docs -no-nis -no-cups -no-iconv -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 8,16,24,32 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-qvfb -no-gfx-vnc -no-gfx-multiscreen -qt-kbd-usb -qt-kbd-tty -qt-mouse-pc -no-glib -qt-mouse-tslib -verbose -I/usr/local/tslib/include -L/usr/local/tslib/lib
7.make install
8.为了方便使用qte-x86和qte-arm工具链来编译程序,必要的环境变量还是得设置一下的。其实,在编译Qt程序时,我们一般只是使用到了qmake工具,所以只要在~/.bashrc中添加几个alias就可以了。
gedit ~/.bashrc
在该文件最后加上:
alias qte-x86-make='/usr/local/qte-x86/bin/qmake'
alias qte-arm-make='/usr/local/qte-arm/bin/qmake'
到这里,交叉编译环境以及要移植的环境都搭建好了。
四,制作配置文件系统
1.在根文件系统的根目录下创建qte-arm,tslib目录。即/qte-arm和/tslib.我们把/usr/local/qte-arm目录下的lib目录和include目录复制到开发板文件系统的qte-arm文件夹。然后将/usr/local/tslib/下面的所有文件都复制到开发板文件系统的tslib目录包括lib,bin等。
2.进入开发板的/tslib/etc文件夹,修改触屏配置
gedit /tslib/etc/ts.conf
修改如下:
module_raw input
#就是在把这个之前的#号去掉,其他不变
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
3.最后,就是设置开发板的环境变量了,在你制作的文件系统中,进入/etc修改profile文本添加以下信息
export QTDIR=/qte-arm
//添加路径
export PATH=$QTDIR/bin:$PATH
//指定tslib主目录位置
export TSLIB_ROOT=/tslib
//指定触摸屏设备
export TSLIB_TSDEVICE=/dev/input/touchscreen0
//指定触摸屏校准文件pointercal存放位置
export TSLIB_CALIBFILE=/etc/pointercal
//指定TSLIB配置文件的位置
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
//指定触摸屏插件所在路径
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
//指定帧缓冲设备
export TSLIB_FBDEVICE=/dev/fb0
//设定控制台设备为none否则默认为/dev/tty,这样会出现”open consol device:No such file or directory KD…..”的错误
export TSLIB_CONSOLEDEVICE=none
//指定TSLIB的库文件路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:TSLIB_ROOT/lib
//指定触摸屏设备
export QWS_MOUSE_PROTO=tslib:/dev/input/touchscreen0
在/opt/code编写三个文件如下:这些代码是在网上摘录的
//finddialog.cpp
#include <QtGui>
#include "finddialog.h"
FindDialog::FindDialog(QWidget *parent)
&&&&:QDialog(parent)
&&label=new QLabel(tr("Find &what:"));
&&lineEdit=new QLineEdit;
&&label->setBuddy(lineEdit);
&&&&&caseCheckBox=new QCheckBox(tr("Match &case"));
&&backwardCheckBox=new QCheckBox(tr("Search &backward"));
&&findButton=new QPushButton(tr("&Find"));
&&findButton->setDefault(true);
&&findButton->setEnabled(false);
&&&&&closeButton=new QPushButton(tr("Close"));
&&&&connect(lineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(enableFindButton(const QString &)));
&&connect(findButton,SIGNAL(clicked()),this,SLOT(findClicked()));
&&connect(closeButton,SIGNAL(clicked()),this,SLOT(close()));
&&&&QHBoxLayout *topLeftLayout =new QHBoxLayout;
&&topLeftLayout->addWidget(label);
&&topLeftLayout->addWidget(lineEdit);
&&&&QVBoxLayout *leftLayout=new QVBoxLayout;
&&leftLayout->addLayout(topLeftLayout);
&&leftLayout->addWidget(caseCheckBox);
&&leftLayout->addWidget(backwardCheckBox);
&&QVBoxLayout *rightLayout=new QVBoxLayout;
&&rightLayout->addWidget(findButton);
&&rightLayout->addWidget(closeButton);
&&rightLayout->addStretch();
&&&&&QVBoxLayout *mainLayout=new QVBoxLayout;
&&mainLayout->addLayout(leftLayout);
&&mainLayout->addLayout(rightLayout);
&&setLayout(mainLayout);
&&&&&setWindowTitle(tr("Find"));
&&setFixedHeight(sizeHint().height());
void FindDialog::findClicked()
&QString text =lineEdit->text();
&Qt::CaseSensitivity cs=caseCheckBox->isChecked() ? Qt::CaseSensitive :Qt::CaseInsensitive;
&if(backwardCheckBox->isChecked())
&&emit findPrevious(text,cs);
&&emit findNext(text,cs);
void FindDialog::enableFindButton(const QString &text)
&findButton->setEnabled(!text.isEmpty());
//finddialog.h
#ifndef FINDDIALOG_H
#define FINDDIALOG_H
#include <QDialog>
class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;
class FindDialog : public QDialog
&&&&FindDialog(QWidget *parent=0);
&&&&void findNext(const QString &str,Qt::CaseSensitivity cs);
&&&&void findPrevious(const QString &str,Qt::CaseSensitivity cs);
private slots:
&&&&void findClicked();
&&&&void enableFindButton(const QString &text);
&&&&QLabel *label;
&&&&QLineEdit *lineEdit;
&&&&QCheckBox *caseCheckBox;
&&&&QCheckBox *backwardCheckBox;
&&&&QPushButton *findButton;
&&&&QPushButton *closeButton;
//main.cpp
#include <QtGui/QApplication>
#include "finddialog.h"
int main(int argc, char *argv[])
&&&&QApplication a(argc, argv);
&&&&FindDialog *dialog=new FindDialog;
&&&&dialog->show();
&&&&return a.exec();
在编写一个hello.pro文件,代码如下:
HEADERS = finddialog.h
SOURCES = finddialog.cpp main.cpp
CONFIG+=qt warn_off release
在当前目录执行:
1.qte-x86-make
用qte-x86-make
hello.pro编译时
qmake后出现错误 qt_config.prf:10: include(file) requires one argument.
解决方法:
环境变量设置的问题,将环境变量QMAKESPEC修改指向当前编译平台的路径:
export QMAKESPEC=/usr/local/qt/mkspecs/linux-g++
会生成一个可执行的hello。我们继续执行qvfb &,打开qvfb。然后执行./hello -qws,会出现如下图面。本机交叉编译测试成功。
3.接着我们执行make clean。主要是消除上面qte-x86-make产生的文件,不然我们在下面使用qte-arm-make的时候会报错。继续执行:
qte-arm-make
当用交叉编译工具时,环境变量QMAKESPEC修改指向当前编译平台的路径
export QMAKESPEC=/usr/local/qte-arm/mkspecs/qws/linux-arm-g++
将生成的hello可执行文件放到开发板文件系统的根目录,执行./hello -qws,就可出现画面。
阅读(4739) | 评论(0) | 转发(5) |
给主人留下些什么吧!~~
请登录后评论。药品服务许可证(京)-经营-违法不良信息举报: 电话、邮箱youkujubao@service.alibaba.com请使用者仔细阅读优酷、、、、和Copyright(C)2018 优酷 youku.com 版权所有qte 移植问题
[问题点数:40分,结帖人xiaopohaibebo]
qte 移植问题
[问题点数:40分,结帖人xiaopohaibebo]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|

我要回帖

更多关于 疑惑之村 的文章

 

随机推荐