[linux]QT/E2.3.7、QT/X11-2.3.2、TMAKE-1.11的安装问题 收藏
    如何搭建QT/Embedded的开发环境,想来类似的资料在网上已经很多了,但是linux的安装不比windows,有着太多的选项可以选择,同时也有着很多的不定因素,这里,我仅对自己如何搭建以及其中出现的问题,并如何解决的等问题进行说明,希望能对广大嵌入式爱好者提供一点帮助!
    一般来说,居于 Qt/Embedded 开发的应用程序最终会发布到安装有嵌入式 Linux 操作系统的小型设备上,所以使用装有 Linux 操作系统的 PC 机或者工作站来完成 Qt/Embedded 开发当然是最理想的环境,尽管 Qt/Embedded 也可以安装在 Unix 和Windows系统上。
    下面将介绍如何在一台装有 Linux操作系统的机器上建立 Qt/Embedded开发环境。
    首先,您需要拥有三个软件安装包:tmake 工具安装包,Qt/Embedded 安装包,Qt 的X11版的安装包。由于上述这些软件安装包有许多不同的版本,您要注意由于版本的不同导致这些软件在使用时可能造成的冲突,为此将告诉您一些基本的安装原则:当您选择或下载了 Qt/Embedded 的某个版本的安装包之后,您下一步要选择安装的 Qt for X11 的安装包的
版本必须比您最先下载的 Qt/Embedded 的版本要旧,这是因为 Qt for X11 的安装包的两个工具 uic 和 designer 产生的源文件会和qt/Embedded 的库一起被编译链接,本着“向前兼容”的原则,Qt for X11 的版本应比 Qt/Embedded 的版本旧。
    将以下面所列版本的安装包,一步一步介绍 Qt/Embedded 开发环境建立的过程(这些软件可以免费从 trolltech 的WEB 或FTP 服务器上下载),
◆ tmake 1.11 或更高版本; (生成Qt/Embedded应用工程的 Makefile 文件)
◆ Qt/Embedded 2.3.7 (Qt/Embedded 安装包)
◆ Qt 2.3.2 for X11; (Qt 的 X11 版的安装包, 它将产生 x11 开发环境所需要的两个工具)
    1.安装tmake 1.11
    #tar -xzf tmake-1.  解压缩tmake软件包到当前目录
    #export TMAKEDIR=$PWD  将TMAKEDIR的目录指定为当前的目录PWD
    #export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++ 
    #export PATH=$TMAKEDIR/bin:$PATH
    2.安装Qt/Embedded 2.3.7
    #tar -xzf qt-embedded-2.3.  解压
    #cd qt-2.3.7  进入到qt的源文件目录中
    #export QTDIR=$PWD
    #export QTEDIR=$QTDIR
    #export PATH=$QTDIR/bin:$PATH
    #export LD_LIBRARY_PATH=$QRDIR/lib:$LD_LIBRARY_PATH
    #./configure -xplatform linux-arm-g++ -shared -debug -qconfig local -qvfb -depths 4,8,16,32 
    在优龙YLE2440开发板的源代码目录下有个头文件:qconfig-local.h,需要在执行该行命
令前将其拷贝到 qt-2.3.7/src/tools目录下,然后再运行该行的 ./configure 命令,否则会提示不到qconfig-local.h头文件;有不明白的地方可以运行 ./configure -h 寻帮助。另外,-xplatform linux-arm-g++ -shared -debug 选项必须写,否则在后期编译程序时会出现多处错误。
    #make sub-src  按精简方式编译开发包
    3.安装Qt/X11 2.3.2
    #tar -xzf qt-x11-2.3.
    #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 
    这一步非常重要,网上很多朋友在安装Qt/X11时都会出现问题,而出现问题最多的地方就在这里,如果没有-no-xft选项,则在安装时会出错,提示不到/usr/inclue/freetype中的freetype.h头文件,再增加了该选项后,./configure 会顺利通过。
    #make  编译
    #make -C tools/qvfb
    #mv tools/qvfb/qvfb bin
    有些朋友的开发环境可能需要下面一步:
    #cp bin/uic $QTEDIR/bin             
 
    有些朋友在安装Qt/X11时会出现下列情况:
    执行 ./configure -no-opengl -no-xft 后,make时能不能顺利通过,这有可能是你的系统
中没有编译所需要的uic和moc,他们应该在bin这个文件夹中,但是事实上并没有,所以编译的时候一般要从Qtpia中考过来,然后再编译就好了:
    #cp ../qtopia/src/qt/qconfig-qpe.h src/toos/
    以上为个人对搭建Qt/Embedded开发环境的一点体验,欢迎大家补充。经过上述步骤,在虚拟机rh9环境下编译YLE2440开发板中提供的hello程序顺利通过。
本文来自CSDN博客,转载请标明出处:blog.csdn/nick0411/archive/2008/08/21/2806666.aspx
在fedora7下安装qt-x11-2.3.2和qt-embedded-2.3.2时出现的错误与修改方法
linux系统安装步骤csdn2008-11-14 12:11
安装方法:把qt-x11-2.3.放到/home下
sudo tar vxzf qt-x11-2.3.
cd qt-x11-2.3.2
export QTDIR =/home/qt-x11-2.3.2
./configure -help
sudo ./configure -platform linux-g++ -thread -system-jpeg -gif -no-xft
sudo make

qt/embedded安装
不是交叉编译时: sudo ./configure -xplatform linux-x86-g++ -thread -qvfb

典型错误如下:
xml/qxml.cpp:2502:  instantiated from here
/usr/local/arm/QT/qt-2.3.7/include/qvaluestack.h:57: error: cannot convert ‘QValueListIterator<QString>’ 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.件是在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<type>::~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通过。但不知道有没有隐患。

kernel/qgfxraster_qws.cpp:5631:  instantiated from here
kernel/qgfxraster_qws.cpp:3635: 警告:提领类型双关的指针将破坏强重叠规则
kernel/qgfxraster_qws.cpp:3708: 警告:提领类型双关的指针将破坏强重叠规则
kernel/qgfxraster_qws.cpp:3831: 警告:提领类型双关的指针将破坏强重叠规则
kernel/qgfxraster_qws.cpp:3849: 警告:提领类型双关的指针将破坏强重叠规则
kernel/qgfxraster_qws.cpp:4119: 警告:‘myptr’ 上的运算结果可能是未定义的
make[3]: *** [kernel/qgfxraster_qws.o] 错误 1
make[3]: Leaving directory `/home/qte-2.3.2/src'
make[2]: *** [src-mt] 错误 2
make[2]: Leaving directory `/home/qte-2.3.2'
make[1]: *** [src-mt] 错误 2
make[1]: Leaving directory `/home/qte-2.3.2'
make: *** [init] 错误 2

把*myptr++ = (*myptr & 0x0f)改为int *myptr++ = (*myptr & 0x0f)

ernel/qgfxraster_qws.cpp:5631:  instantiated from here
kernel/qgfxraster_qws.cpp:3635: 警告:提领类型双关的指针将破坏强重叠规则
kernel/qgfxraster_qws.cpp:3708: 警告:提领类型双关的指针将破坏强重叠规则
kernel/qgfxraster_qws.cpp:3831: 警告:提领类型双关的指针将破坏强重叠规则
kernel/qgfxraster_qws.cpp:3849: 警告:提领类型双关的指针将破坏强重叠规则
kernel/qgfxraster_qws.cpp:4118: 警告:未使用的变量 ‘rgb’
make[3]: *** [kernel/qgfxraster_qws.o] 错误 1
make[3]: Leaving directory `/home/qte-2.3.2/src'
make[2]: *** [src-mt] 错误 2
make[2]: Leaving directory `/home/qte-2.3.2'
make[1]: *** [src-mt] 错误 2
make[1]: Leaving directory `/home/qte-2.3.2'
make: *** [init] 错误 2

注释了rgb。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。