我安装了tmake-1.11,qt-2.3.7,qt-2.3.2,出了很多错误之后终于安装通了,有点心得与大家分享,以下均是本人经验,不能保证一
定正确,我的窗体helloworld还没有成功,只是在安装qt-2.3.7和qt-2.3.2时,在make之后看到了enjoy。
我用的是ubuntu 7.10,工具链2.95.3
1.tmake-1.11
tar -xfz tmake-1.11.tar.gz
export TMAKEDIR=$pwd/tamke-1.11
//这句完了可以用echo命令检验增加对了没有,echo $TMAKEDIR回车,应出现/tmake-1.11
//以下所有添加的环境变量或路径都可以用这句检测,注意大写的环境变量前的$不能少
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
export PATH=$TMAKEDIR/bin:$PATH
2.QT/Embedded 2.3.7
tar -xfz qt-embedded-2.3.7.tar.gz
cd qt-2.3.7
export QTDIR=$PWD
export QTEDIR=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure -xplatform linux-arm-g++ -shared -qconfig local -depths 16,32 -qvfb -gif -system-jpeg
//这句通常会出问题,典型的是在回答yes后出现
configure: no such file: src/tools/qconfig--qvfb.h
出这个错的原因是在-qconfig选项后直接跟了另一个选项,如-qvfb,它把-qvfb当作
配置文件的名字,按理来说如果-qconfig后不写配置文件的名字,它会默认用
qconfigure.h,但我写成-qconfig它不肯默认,打开qconfigure.h,好像什么都没写,
只好把厂家提供的qcongfig-local.h拷到/qt2.3.7/src/kernel/下,在配置时写成
-qconfig local。如果不写-xplatform linux-arm-g++,就是说不想交叉编译的话,
就会在文件kernel/qgfxraster_qws.cpp这里出现无数的错,我也不知道为什么。
make //如果你的环境不和用户手册上的一模一样(如PC操作系统版本),这里就会出很多问
题,韦东山在《linux 应用开发完全手册》里说,要针对编译器的版本修改代码,虽
然他用的编译器版本跟 我的不一样,但我得到一个启发,就是可以根据make之后的
出错信息对代码进行修 改,当然这样做也有风险,我并不是高手,说不定改了代码之
后会有灾难性的后果,或者暂时看不到的隐患。但目前为止还没有发现。不管是qt-
2.3.7还是qt-2.3.2出现了错,都是相同方法修改。前两个错误的修改方法是韦东山在
《linux 应用开发完全手册》里说的,应该可以确信,最后一个是我自己猜的。
典型错误如下:
xml/qxml.cpp:2502: instantiated from here
/usr/local/arm/QT/qt-2.3.7/include/qvaluestack.h:57: error: cannot convert ‘QValueListIterator
’ to ‘const char*’ for argument ‘1’ to ‘int remove(const char*)’
make[2]: *** [xml/qxml.o] 错误 1
make[2]: Leaving directory `/usr/local/arm/QT/qt-2.3.2/src'
make[1]: *** [sub-src] 错误 2
make[1]: Leaving directory `/usr/local/arm/QT/qt-2.3.2'
make: *** [init] 错误 2
这个错误是说,在文件qvaluestack.h的57行出错。改正方法是修改文件qt-2.3.7/src/tools/qvaluestack.h的
第57行,将remove( this->fromLast() );改为
this->remove( this->fromLast() );
修改时可能要更改文件权限,变成可写的,虽然在错误信息里qvaluestack.h文件是在qt-2.3.7/include/下,但要修改的文件要在qt-2.3.7/src/下找,不在kernel里就在tools里。
还有一个典型错误是说,
在文件qwindowsystem_qws.h中缺少一个叫做QWSInputMethod的类,修改方法为修改文件qt-2.3.7/src/kernel/qwindowsystem_qws.h,增加一个类class QWSInputMethod;
我最头疼的一个错误
/root/2410/qt-2.3.7/include/qsortedlist.h: In destructor `QSortedList::~QSortedList()':
/root/2410/qt-2.3.7/include/qsortedlist.h:51: error: there are no arguments to `clear' that depend on a template parameter, so a declaration of `clear' must be available
/root/2410/qt-2.3.7/include/qsortedlist.h:51: error: (if you use `-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
make[2]: *** [allmoc.o] 错误 1
make[2]: Leaving directory `/root/2410/qt-2.3.7/src'
make[1]: *** [sub-src] 错误 2
make[1]: Leaving directory `/root/2410/qt-2.3.7'
make: *** [init] 错误 2
这个错误是说,在文件qsortedlist.h的第51行,clear没有声明,不可用,原代码在qt-2.3.7/src/tools/下,51行
是 ~QSortedList() { clear(); },我猜把它改成~QSortedList() { },或
者 ~QSortedList() {int clear(); },都可以make通过。但不知道有没有隐患。
3.qt-2.3.2
tar xfz qt-x11-2.3.2.tar.gz
cd qt-2.3.2
export QTDIR=$PWD
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure -no-opengl -no-xft
make
make -C tools/qvfb
mv tools/qvfb/qvfb bin
cp bin/uic $QTEDIR/bin
make -C tools/qembed
mv tools/qembed/qembed bin
出现的错误同qt-2.3.7的那样修改。
////////////////////////////////////
一,QT/E的安装。
在本机中安装了包括QT4.0.1(WINDOWS版本)以及QT/E2。3。7(LINUX版本)。
QT/E我安装在我的虚拟机中。因为QT/E2.3.7的版本问题,其适宜在REDHAT9。0版本(或更低版本)下安装,否则安装不成功。QT/E安装过程复杂,具体细节可以参考下面这篇文章。《Qt/Embedded开发环境建立的过程》
此文在网上可搜索到。
本机下虚拟机中QT/E安装路径为:/home/wangxl/QTE/qt-2.3.7
QT/X11安装路径为:/home/wangxl/QTE/qt-2.3.2
Tmake安装路径为:/home/wangxl/QTE/Tmake-1.8
QT/E下载地址为:ftp://ftp.rediris.es/mirror/Qt/source/
Tmake下载地址为:ftp://ftp.trolltech.com/freebies/tmake/
二.QT与QT/E以及QT3与QT4之间的区别
相对来说QT与QT/E的语法一样,所不同之处在库类大小或者库类函数大小不同而已。QT/E相对于QT来说,不具有少数类或者少数函数的支持。具体QT/E是否包含某个类或者包含某个类中的函数,我的方法是在QT/E安装目录下的include文件夹中去查找。
QT3和QT4有很多不同点,主要不同也是在于库类以及支持函数有所变化,比如,有些QT3中的函数,在QT4中被其他函数名所代替,因此很多QT4程序在QT3环境下无法执行。QT/E2.3.7与QT3基本相同,除了我前面提到的QT与QT/E的差别。
三.QT/E编译与执行。
1.在QT/E编译与执行前要先设置TMAKE与QT/E LIB环境,具体方法如下:
[root@localhost tmake-1.8]# export TMAKEDIR=$PWD
[root@localhost tmake-1.8]# export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
[root@localhost tmake-1.8]# export PATH=$TMAKEDIR/bin:$PATH
[root@localhost qt-2.3.7]# export QTDIR=$PWD
[root@localhost qt-2.3.7]#export QTEDIR=$QTDIR
[root@localhost qt-2.3.7]#export PATH=$QTDIR/bin:$PATH
[root@localhost qt-2.3.7]#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
2.如果你是用DESIGNER工具设计的界面(后面有讲),则要将*.ui文件转换成*.h文件和*.cpp文件。转换方法如下:
uic –o test.h test.ui
uic –o test.cpp –i test.h test.ui
3.编写一个*.pro文件(用来生成Makefile文件用),该文件格式比较固定。
如test.pro文件基本格式如下(以test.cpp ,test.h main.cpp为例子):
EMPLATE = app
CONFIG += qt warn_on release
HEADERS = test.h
SOURCES = test.cpp \
main.cpp
TARGET = hello
DEPENDPATH=/home/wangxl/QTE/qt-2.3.7/include
REQUIRES=
4.生成Makefile文件
方法为:tmake –o Makefile test.pro
5 编译生成可执行文件
make
6 打开QVFB
进入安装QT/X11所在目录, 在BIN目录下执行程序qvfb。
有时候需要修改qvfb执行时的deptb参数才能够执行QT/E程序。可以直接在QVFB打开窗口的Configure彩单项中选择,也可以用如下命令执行QVFB。
./qvfb –width ** -height ** -depth **
7.执行QT/E程序
如 。/TEST
在QVFB程序打开的窗口中将出现TEST程序的显示 。
四.Qt/e与QT/X11
安装QT/E的同时还需要安装QT/X11与Tmake,Tmake 是用来帮助生成Makefile文件的。安装QT/X11主要是向QT/E提供designer工具和qvfb工具的。
Designer可以用来设计图形界面,最后生成.ui文件,可通过UIC命令转换为相应的C++文件。
QVFB模拟帧缓冲,提供QT/E程序的显示平台。
五.QT/E 程序ARM 板上执行
在我虚拟机上可以执行的QT/E程序不能在ARM板上执行,需要对QT/E进行重新编译,并需要设置响对于ARM板系统的编译环境,具体方法可以参考我另外的一文《QT/E开发记录》
六.QT/E支持中文显示问题
QT/E需要字体转换才能显示中文。具体方法可以参考我另外的一文《QT/E开发记录》
但是由于缺少UNICODE的QPF文件的字体,中文字大小不均匀问题尚没解决。
七 QT/E的一些参考资料:
QT中文论坛
(关于QT3的类,以及类函数可以在这寻找)
提供QT3编程最好书籍的电子版本《C++ GUI Programming with QT 3》(本机)
关于QT4可以参考QT ASSISTNAT(本机中),另外QT ASSISTNAT中也可以查找QT3的类及库等。
阅读(992) | 评论(1) | 转发(0) |