交叉編譯QT4.8.6遇到問題記錄
阿新 • • 發佈:2019-01-09
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