实验所需资源:

  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 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 的工具链。

后续实验见本分类下的其它文档。

有什么问题欢迎探讨,需要资源的可以留言。^_^

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!