小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

一個(gè)頑疾——QT不能包含tslib的頭和庫文件聯(lián)合編譯的解決方法

 風(fēng)之library 2014-10-13

      先介紹一下我的交叉編譯環(huán)境,OS是Fedora9,交叉編譯器是arm-linux-gcc-4.3.3(arm-2009q1),其它,tslib-1.4、QT4.7.2,硬件平臺(tái)Omap3530。

      以前我的交叉編譯器使用的是arm-linux-gcc-4.3.2,聯(lián)合編譯QT4.7.2和tslib-1.4沒有任何問題。現(xiàn)在,我換成了arm-linux-gcc-4.3.3,再次聯(lián)合編譯時(shí),就出現(xiàn)問題了。過程如下:

      1、安裝tslib-1.4 。

      2、下載QT,我當(dāng)時(shí)下載的版本是 qt-everywhere-opensource-src-4.7.2.tar.gz 。

      3、執(zhí)行以下命令執(zhí)行QT4.7.2編譯前的配置:

            # tar -zxvf qt-everywhere-opensource-src-4.7.2.tar.gz
            # cd qt-everywhere-opensource-src-4.7.2
            # echo yes | ./configure -prefix /opt/Qt4.7 -opensource -embedded arm -no-qt3support -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-pc -no-mouse-linuxtp -qt-mouse-tslib -I /usr/local/tslib/include -L /usr/local/tslib/lib -no-neon

      上面的主要參數(shù)含義說明如下:

            -prefix /opt/Qt4.7                         : 表示Qt4.7最終的安裝路徑是/opt/Qt4.7。注意,將QT部署到目標(biāo)板上時(shí),也需要把Qt4.7放在這個(gè)路徑上;
            -embedded arm                         :  表示將編譯針對(duì)arm平臺(tái)的embedded版本;
            -xplatform qws/linux-arm-g++  : 表示使用arm-linux交叉編譯器進(jìn)行編譯;
            -qt-mouse-tslib                           : 表示將使用tslib來驅(qū)動(dòng)觸摸屏
            -I /usr/local/tslib/include
            -L /usr/local/tslib/lib                    : 包含tslib的頭文件和庫文件

      這時(shí),問題出現(xiàn)了。屏幕上會(huì)打印如下信息:

           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++.

      根據(jù)提示,需要將tslib的頭文件和庫文件的路徑賦給QMAKE_INCDIR和QMAKE_LIBDIR兩個(gè)變量。于是,進(jìn)入/home/liuqiqi/source/qt/qt-everywhere-opensource-src-4.7.2/mkspecs/qws/linux-arm-g++路徑下,打開qmake.conf文件,在3個(gè)include后面添加:

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

      去掉 -I 和 -L 兩個(gè)參數(shù),重新執(zhí)行上面的命令,結(jié)果仍然出現(xiàn)相同的問題。

      于是,又開始求助google和百度了。但是,搜到的結(jié)果基本上都是說系統(tǒng)找不到tslib的頭和庫文件,將tslib頭文件和庫文件的路徑賦給QMAKE_INCDIR和QMAKE_LIBDIR就可以解決問題。這種方法我已經(jīng)試過了,對(duì)于我這種情況,顯然不適用。

      那為什么我之前用arm-linux-gcc-4.3.2編譯的時(shí)候就沒有問題呢?這時(shí),我開始找兩個(gè)編譯器之間的不同之處了,我到arm-linux-gcc-4.3.2的bin文件夾下,發(fā)現(xiàn)里面沒有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)

      再次執(zhí)行上面的指令,問題解決。

      4、執(zhí)行以下指令編譯并安裝QT4.7.2:

            # make && make install

      上面命令中出現(xiàn)的 && 符號(hào)表示只有左邊的 make 命令執(zhí)行成功時(shí)(返回0),才會(huì)執(zhí)行右邊 make install 命令。

      編譯的時(shí)候,又出現(xiàn)了以下錯(cuò)誤,為什么這么多問題?沒辦法,看看問題在哪兒吧。

            /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'

      繼續(xù)求助網(wǎng)絡(luò),這個(gè)問題比較好解決,將/home/liuqiqi/source/qt/qt-everywhere-opensource-src-4.7.2/mkspecs/common/linux.conf中的QMAKE_LIBS_THREAD變量添加一個(gè)參數(shù)“-lts”,如下所示,保存后,繼續(xù)編譯:

            QMAKE_LIBS_THREAD     = -lpthread -lts

      編譯完成后,Qt4.7.2被安裝在/opt/Qt4.7目錄下

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多