安装arm版qt出错

来源:互联网 发布:sql between and的用法 编辑:程序博客网 时间:2024/05/23 01:57

 先介绍一下我的交叉编译环境,OS是ubuntu11.10,交叉编译器是arm-linux-gcc-4.3.3(arm-2007q1),其它,tslib-1.4、QT4.7.0,硬件平台sbc6845。

      以前我的交叉编译器使用的是arm-linux-gcc-4.3.2,联合编译QT4.7.0和tslib-1.4没有任何问题。现在,我换成了arm-linux-gcc-4.3.3,再次联合编译时,就出现问题了。过程如下:

      1、安装tslib-1.4 。

      2、下载QT,我当时下载的版本是 qt-everywhere-opensource-src-4.7.0.tar.gz 。

      3、执行以下命令执行QT4.7.0编译前的配置:

            # tar -zxvf qt-everywhere-opensource-src-4.7.0.tar.gz
            # cd qt-everywhere-opensource-src-4.7.0
            # ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.7.0-arm   -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-g++ -depths 16,18,24 -fast -optimized-qmake -pch -iconv -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-openssl -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

      上面的主要参数含义说明如下:

            -prefix /usr/local/Trolltech/QtEmbedded-4.7.0-arm                         : 表示Qt4.7最终的安装路径是/usr/local/Trolltech/QtEmbedded-4.7.0-arm。注意,将QT部署到目标板上时,也需要把Qt4.7放在这个路径上;
            -embedded arm                         :  表示将编译针对arm平台的embedded版本;
            -xplatform qws/linux-arm-g++  : 表示使用arm-linux交叉编译器进行编译;
            -qt-mouse-tslib                           : 表示将使用tslib来驱动触摸屏
            -I /usr/local/tslib/include
            -L /usr/local/tslib/lib                    : 包含tslib的头文件和库文件

      这时,问题出现了。屏幕上会打印如下信息:

           The tslib functionality test failed!
              You might need to modify the include and library search paths by editing
              QMAKE_INCDIR and QMAKE_LIBDIR in
              /home/liuqiqi/source/qt/qt-everywhere-opensource-src-4.7.2/mkspecs/qws/linux-arm-g++.

      根据提示,需要将tslib的头文件和库文件的路径赋给QMAKE_INCDIR和QMAKE_LIBDIR两个变量。于是,进入/home/liuqiqi/source/qt/qt-everywhere-opensource-src-4.7.2/mkspecs/qws/linux-arm-g++路径下,打开qmake.conf文件,在3个include后面添加:

            QMAKE_INCDIR = /usr/local/tslib/include
            QMAKE_LIBDIR = /usr/local/tslib/lib

      去掉 -I 和 -L 两个参数,重新执行上面的命令,结果仍然出现相同的问题。

      于是,又开始求助google和百度了。但是,搜到的结果基本上都是说系统找不到tslib的头和库文件,将tslib头文件和库文件的路径赋给QMAKE_INCDIR和QMAKE_LIBDIR就可以解决问题。这种方法我已经试过了,对于我这种情况,显然不适用。

      那为什么我之前用arm-linux-gcc-4.3.2编译的时候就没有问题呢?这时,我开始找两个编译器之间的不同之处了,我到arm-linux-gcc-4.3.2的bin文件夹下,发现里面没有arm-linux-gcc和arm-linux-g++指令,取而代之的是arm-none-linux-gnueabi-gcc和arm-none-linux-gnueabi-g++了。于是,我修改了/home/liuqiqi/source/qt/qt-everywhere-opensource-src-4.7.2/mkspecs/qws/linux-arm-g++/qmake.conf文件,将arm-linux换成arm-none-linux-gnueabi:

             #
             # qmake configuration for building with arm-linux-g++
             #

             include(../../common/g++.conf)
             include(../../common/linux.conf)
             include(../../common/qws.conf)

             # modifications to g++.conf
            QMAKE_CC = arm-none-linux-gnueabi-gcc
            QMAKE_CXX = arm-none-linux-gnueabi-g++
            QMAKE_LINK = arm-none-linux-gnueabi-g++
            QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-g++

            # modifications to linux.conf
            QMAKE_AR = arm-none-linux-gnueabi-ar cqs
            QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy
            QMAKE_STRIP = arm-none-linux-gnueabi-strip

             load(qt_config)

      再次执行上面的指令,问题解决。

      4、执行以下指令编译并安装QT4.7.2:

            # make && make install

      上面命令中出现的 && 符号表示只有左边的 make 命令执行成功时(返回0),才会执行右边 make install 命令。

      编译的时候,又出现了以下错误,为什么这么多问题?没办法,看看问题在哪儿吧。

            /home/liuqiqi/source/qt/qt-everywhere-opensource-src-4.7.2/lib/libQtGui.so: undefined reference to `ts_read_raw'
            /home/liuqiqi/source/qt/qt-everywhere-opensource-src-4.7.2/lib/libQtGui.so: undefined reference to `ts_open'
            /home/liuqiqi/source/qt/qt-everywhere-opensource-src-4.7.2/lib/libQtGui.so: undefined reference to `ts_fd'
            /home/liuqiqi/source/qt/qt-everywhere-opensource-src-4.7.2/lib/libQtGui.so: undefined reference to `ts_config'
            /home/liuqiqi/source/qt/qt-everywhere-opensource-src-4.7.2/lib/libQtGui.so: undefined reference to `ts_close'
            /home/liuqiqi/source/qt/qt-everywhere-opensource-src-4.7.2/lib/libQtGui.so: undefined reference to `ts_read'

      继续求助网络,这个问题比较好解决,将/home/liuqiqi/source/qt/qt-everywhere-opensource-src-4.7.2/mkspecs/common/linux.conf中的QMAKE_LIBS_THREAD变量添加一个参数“-lts”,如下所示,保存后,继续编译:

            QMAKE_LIBS_THREAD     = -lpthread -lts

      编译完成后,Qt4.7.2被安装在/opt/Qt4.7目录下

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 22岁的儿子在家不说话怎么办 儿子2周4个月了不说话怎么办 三岁的宝宝还不会数数怎么办 2岁宝宝晚上不睡觉不听话怎么办 8个月的狗狗怕人不敢出门怎么办 狗太怕人了怎么办都不敢出门 媳妇和婆婆晚上都不想带孩子怎么办 婆婆和媳妇带孩子观念不一样怎么办 婆婆给媳妇买了不喜欢的家具怎么办 断奶后宝宝对奶粉很抗拒怎么办 两岁宝宝断奶不喝奶粉怎么办 宝宝两岁了断奶后奶粉不吃怎么办 宝宝断奶两天了不愿意吃奶粉怎么办 一岁四个月宝宝断奶不喝奶粉怎么办 四个月宝宝断奶不喝奶粉怎么办 四个月宝宝断奶后不吃奶粉怎么办 2岁的宝宝不开口说话怎么办 一周岁宝宝断奶不喝奶粉怎么办 八个月宝宝断奶不喝奶粉怎么办 婆家人总是用心机对待娘家人怎么办 婆婆老是背后说我娘家人坏话怎么办 婆家姐带孩子住娘家不走怎么办? 老是想在娘家不想回婆家怎么办 娘家和婆家同时向我借钱怎么办 土地确权后娘家婆家都没有怎么办 结了婚婆家向娘家借钱怎么办? 婆婆的娘家人从我家住怎么办 八个月宝宝断奶后不吃奶粉怎么办 吃母乳的宝宝不吸奶嘴怎么办 宝宝吸了奶嘴不吸母乳怎么办 婴儿吃了奶嘴不吸母乳怎么办 十一个月宝宝断奶不喝奶粉怎么办 孩子三门成绩全不及格家长该怎么办 宝宝快十个月了还不会爬怎么办 小孩写字老把手向里扭曲怎么办 孩子该上四年级了数学差的很怎么办 孩子上三年级了数学成绩好差怎么办 三年级数学老考70-80分怎么办 叛逆期的孩子用死来威胁家长怎么办 叛逆期的孩子抽烟喝酒家长该怎么办 大学遇到不好的老师加课怎么办