先介紹一下我的交叉編譯環(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 上面的主要參數(shù)含義說明如下: -prefix /opt/Qt4.7 : 表示Qt4.7最終的安裝路徑是/opt/Qt4.7。注意,將QT部署到目標(biāo)板上時(shí),也需要把Qt4.7放在這個(gè)路徑上; 這時(shí),問題出現(xiàn)了。屏幕上會(huì)打印如下信息: The tslib functionality test failed! 根據(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 去掉 -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: # 再次執(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' 繼續(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目錄下 |
|