實驗所需資源: 1. tiny210(cortex a8) 2. QT 版本:5.6.2 3. PC 環境:UBUNTU 4. tslib:tslib 1.4 5. 交叉工具鏈:4.5.1 6. 開發板已裝載好 Linux 編譯 tslib 可能需要安裝的庫: ~~~~ sudo apt get i ...
實驗所需資源:
- tiny210(cortex-a8)
- QT 版本:5.6.2
- PC 環境:UBUNTU
- tslib:tslib-1.4
- 交叉工具鏈:4.5.1
- 開發板已裝載好 Linux
編譯 tslib
可能需要安裝的庫:
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
編譯安裝步驟如下:
tar xzf tslib-1.4.tar.gz
cd tslib
./autogen.sh
mkdir tmp
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$(pwd)/tmp
make
make install
更改 tslib 配置文件
sudo vim tmp/etc/ts.conf
去掉 # module_raw input 前面的“#”和空格
編譯 QT5.6.2
解壓 QT 後,進入到該文件夾。
構造一個 build.sh 腳本,內容如下:
#!/bin/bash
./configure \
-no-c++11 \
-prefix /Qt5 \
-opensource \
-release \
-confirm-license \
-xplatform linux-arm-gnueabi-g++ \
-shared \
-qt-zlib \
-no-gif \
-qt-libjpeg \
-no-opengl \
-no-cups \
-no-glib \
-no-dbus \
-no-rpath \
-no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 \
-no-avx \
-no-openssl \
-nomake tools \
-qreal float \
-qt-libpng \
-tslib \
-verbose \
-nomake examples \
-I /Qt5.6/tslib/tmp/include \
-L /Qt5.6/tslib/tmp/lib
修改配置文件:
vim /qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
加上:
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv7-a -mtune=cortex-a8
QMAKE_CXXFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv7-a -mtune=cortex-a8
將
# modifications to g++.conf
QMAKE_CC = arm-linux-gnueabi-gcc
QMAKE_CXX = arm-linux-gnueabi-g++
QMAKE_LINK = arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-linux-gnueabi-g++
改為
# modifications to g++.conf
QMAKE_CC = arm-linux-gnueabi-gcc -lts -ldl
QMAKE_CXX = arm-linux-gnueabi-g++ -lts -ldl
QMAKE_LINK = arm-linux-gnueabi-g++ -lts -ldl
QMAKE_LINK_SHLIB = arm-linux-gnueabi-g++ -lts -ldl
chmod 777 build.sh
./build.sh
make -J4
make install
QT 編譯過程中可能需要的庫
UBUNTU 使用以下命令安裝
xcb 庫:
sudo apt-get install "^libxcb.*" libx11-xcb-dev libglu1-mesa-dev libxrender-dev
一開始我是用 4.3.2 版本的工具鏈來編譯 QT 的,到最後卻報了
ld: hidden symbol `void QQmlThread::postMethodToThread<QQmlDataBlob*, QQmlDataBlob*, QQmlDataLoaderThread>(void (QQmlDataLoaderThread::)(QQmlDataBlob), QQmlDataBlob* const&)' isn't defined
這個錯誤,查了官方的資料得知 Bug with GCC versions < 4.4.x,感覺瞬間涼涼~ 只好換成了 4.5.1 的工具鏈。
後續實驗見本分類下的其它文檔。
有什麼問題歡迎探討,需要資源的可以留言。^_^