qt3 for arm 环境搭建

本文介绍如何在不同环境中编译和移植QT 3.1.1及3.3.8版本,包括配置环境、解决编译错误、测试及设置环境变量的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、QT版本:3.1.1 (ubuntu10.04configure出错,需要更改出错文件代码)

编译环境:redhat9 + gcc-3.2.2 + arm-linux-gcc-4.0.0

1 ftp://ftp.qt.nokia.com/qt/source/ 下载

qt-x11-free-3.1.1.tar.bz2  (如果编译的qt程序是直接运行在开发板上的,不用下载此源码)

qt-embedded-free-3.1.1.tar.bz2

解压到安装目录,我安装的目录是 /opt/qt3/

2 进入qt-x11的目录,执行命令

./configure –thread

make

make –C tools/qvfb

cp tools/qvfb/qvfb /bin

编译x11的源码是为了可以在pc机上模拟qt的应用程序。

3. 进入qt-embedded的目录,执行命令

./configure -embedded arm   -thread -no-cups  -depths 4,8,16,32   

    注:网上好多资料加行了-qvfb的参数,但是我总编译不过去只好去掉了,网友可以再试试,编译过了告诉我一声。

   上述选项: -embedded arm 指目标平台为arm -thread 表示支持qt线程,本人开发当中用到;-depths 4,8,16,32 表示支持481632 位的显示颜色深度。还有很多选项就不一一列举,请查看 ./configure -help

     此外还有一个选项我没用的是 -qconfig local,你可以把一些开关变量写到一个文件qconfig-local.h 中,并把它放到$QTDIR/src/tools下。可参考这个目录下的qconfig-small.hqconfig-medium.h qconfig-large.h等文件,直接使用它们也行,如: -qconfig small 。通过这些开关变量,可以把一些开发当中用不着的构件去掉,减少qt库的大小。这里要对QT比较熟练,初学者可先不理。

   编译

   make      // 指定按精简方式编译开发包,也就是说有些Qt 类未被编译。

   在编译过程中可能会出错,百度一下就可以解决

   测试

   至此编译工作完成,最后测试一下是否能正常使用。我们可以用QT自带的例子来测试,如:

   cd $QTDIR/examples/aclock      //或你自己新建一个QT工程也行

   make clean                              //把原来的清掉

   rm    .pro      Makefile                       //删掉,重新建立工程文件

   qmake   -project

   qmake   -spec $QTDIR/mkspecs/qws/linux-arm-g++   -o Makefile          

   -spec指定目标板的配置文件,这里我做的是linux arm平台,注意在这里,$QTDIR/mkspecs/qws/linux-arm-g++ 它不是编译器,是一个配置文件,而编译时用的编译器是我们在第一步建立的arm交叉编译工具链里面的编译器。

   make                     

   如果没出错就表示你的QT/E环境已经成功建立。如果提示说cannot   find   -lqte 那么你试一下修改Makefile文件,找到-lqte ,把它改为-lqte-mtmake一次一般就行了。这是因为如果用到QT线程或其它一些原因,它生成的库不再是libqte.so.3.1.0,而是libqte-mt.so.3.1.0,所以它便找不到了。

 

移植到开发板(以下都是在目标机环境下)

1、新建一个目录,如:/qt/lib。进入此目录 cd   /qt/lib

2、通过 ftp 把上面生成的qt库文件libqte-mt.so.3.1.0下载到开发板/qt/lib/目录

   下。(注意:不要用wget 下载,会破坏库文件,从而出现 ld.so: dynamic-link.h: 62:

    elf_get_dynamic_info: Assertion `! "bad dynamic tag"'''''''''''''

    '''''''''''''''''''''''''''''''''''''''

    ''''' failed!.这种错误)

3、创建qt库连接:

     ln   -s   libqte-mt.so.3.1.1     libqte-mt.so

     ln   -s   libqte-mt.so.3.1.1     libqte-mt.so.3

     ln   -s   libqte-mt.so.3.1.1     libqte-mt.so.3.1

4、建立环境变量

     vi     ~/.bashrc

     在后面加上

     export QTDIR=/qt
     export QTEDIR=$QTDIR
     export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

5、到此目标板的环境已经建好。现在可以把上面的例子aclock下载到目标板上试一下能不能跑起来!

     在开发板控制台下输入: ./aclock -qws

     如果能跑起来但是键盘用不了,那是正常的情况,因为键盘、鼠标等设备的接口还没加进QT/E的原因,而这个不是一两句话能说清的,所以留到以后再另外补充!

    补充一点:如果有类似这样的提示: "./aclock: error while loading shared

     libraries: libstdc++.so.6: cannot load shared object file: No such file or

    directory." 你可以从我们第一步建立的arm交叉编译工具链里

    /usr/local/arm/2.95.3/arm-linux/lib/目录下找到相应的库文件下载到开发板的/lib目录下即可。

4. 进入qt-x11目录,执行命令

   cd bin/

   ./qvfb &

   启动qt模拟器

5.设置环境变量

   root目录下打开.bashrc

   也可以这样打开环境变量 vi     ~/.bashrc

   编辑环境变量的内容

export PATH=/opt/qt3/qt-x11-free-3.3.8/tools/qvfb:$PATH  
export QTPATH=/opt/qt3/qt-embedded-free-3.3.8  

export PATH=$QTDIR/bin:$PATH  

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

   保存退出,注销

6. 进入qt-embedded目录

   先打开一个终端 执行命令qvgb,打开qt模拟器

   再打开一个终端

   cd examples/

   cd aclock

   ./aclock –qws

   此时应该可以运行一个时钟的窗口。

   QT环境变量的设置方法

   export QTDIR=$PWD              //把当前目录设为qt的安装目录
   export PATH=$QTDIR/bin:$PATH  
   export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

7. 脚本文件编程方法

*********以下为文件里编辑的内容**********************

#/bin/sh //表示为脚本文件

export QTDIR=$PWD              //将此脚本文件放到跟qt目录下,把当前目录设为qt的安装目录
export PATH=$QTDIR/bin:$PATHH=$QTDIR/lib:$LD_LIBRARY_PATH

echo “set env”   //输出信息  
export LD_LIBRARY_PAT

**************************************************

保存后 执行命令chmod -x filename 打开执行权限

二、QT版本:3.3.8 (ubuntu10.04radhat下都出错很多,改起来比较麻烦)

1.进入qt-embedded的目录,执行命令

./configure -embedded arm   -thread -no-cups  -depths 4,8,16,3      编译过程中会有错误。

修改1:打开includ/qstring.h 199

将两个 ushort &unicode()函数都屏蔽掉,改成

ushort &unicode(){ushort &tmp = ucs; return tmp;}

修改2:编译qt-x11-free-3.3.8 bin下会生成uic文件,复制到qt-embedded-free-3.3.8bin

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值