移植 Qt 至 tiny210 详细过程
Posted Zackary.Liu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移植 Qt 至 tiny210 详细过程相关的知识,希望对你有一定的参考价值。
实验所需资源:
- 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 的工具链。
后续实验见本分类下的其它文档。
有什么问题欢迎探讨,需要资源的可以留言。^_^
以上是关于移植 Qt 至 tiny210 详细过程的主要内容,如果未能解决你的问题,请参考以下文章