1. 程式人生 > >交叉編譯QT4.8.6遇到問題記錄

交叉編譯QT4.8.6遇到問題記錄

PC:ubuntu14

工具鏈:arm-none-linux-gnueabi-  4.8.3

交叉編譯QT遇到問題集錦,本人新手,問題較多。

1、configure QT的時候遇到這個問題:

The tslib functionality test failed!

      You might need to modify the include and library search paths by editing
      QMAKE_INCDIR and QMAKE_LIBDIR
導致這個的原因可能很多,所以需要在configure後面加上-verbose檢視具體是報什麼錯
1)找不到編譯器這裡要注意的就是configure裡面要更改 -xplatform qws/linux-arm-gnueabi-g++
,我之前是照搬網上的-xplatform qws/linux-arm-g++
2)skipping incompatible libts.so when searching for -lts
 cannot find -lts

檢視tslib編譯過程和tslib下面的Makefile發現libts是gcc編譯的,這裡就是為什麼incompatible的原因,但是我之前交叉編譯工具是安裝好的,這裡再執行:

$ export PATH=$PATH:/usr/local/arm/arm-2014.5/bin
$ export CC=arm-none-linux-gnueabi-gcc
$ export CXX=arm-none-linux-gnueabi-g++

2、undefined reference to `__sync_add_and_fetch_4'

具體原因網上有,我是交叉編譯器從4.4.1直接換到最新的4.8.3,問題解決了~

3、提示找不到libts的庫

            lib/libQtGui.so: undefined reference to `ts_read_raw'
            lib/libQtGui.so: undefined reference to `ts_open'
            lib/libQtGui.so: undefined reference to `ts_fd'
            lib/libQtGui.so: undefined reference to `ts_config'
            lib/libQtGui.so: undefined reference to `ts_close'
            lib/libQtGui.so: undefined reference to `ts_read'
修改 qt-everywhere-opensource-src-4.8.6/mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf
在後面加上 -lts,這裡紅色部分要注意的是根據自己情況修改相應資料夾下的qmake.conf
QMAKE_CC                = arm-none-linux-gnueabi-gcc -ltsQMAKE_CXX               = arm-none-linux-gnueabi-g++ -ltsQMAKE_LINK              = arm-none-linux-gnueabi-g++ -ltsQMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++ -lts貌似上面的修改方法在後面編譯非QT工程的時候有點不便,如果不做特別處理,每次會連結lts庫報錯,這裡增加另外一種參考方法:
在qt_every_where目錄下修改mkspecs/qws/common/linux.conf
在QMAKE_LIBS_THREAD     = -lpthread後增加-lts程式設計
QMAKE_LIBS_THREAD     = -lpthread -lts