作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植

TSLIB 源码编译 由于 QT 依赖 TSLIB,因此在编译 QT 源码前先编译 TSLIB。 从 https://github.com/libts/tslib/releases/tag/1.15 中下载 tslib-1.15tar.bz2 到 Linux 系 统下并解压,进入解压目录,新建 install 目录:

cd tslib-1.15

mkdir install

作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第1张图片
确认交叉编译链是否匹配:
在这里插入图片描述
获取 install 目录的完整路径:
在这里插入图片描述
开始交叉编译:

./configure --prefix=/home/ronnie/work/ssd201/qt/tslib-1.15/install -host=arm-linux-gnueabihf

作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第2张图片

make

make install

在这里插入图片描述
QT 源码编译 静态编译  从 http://download.qt.io/archive/qt/5.15/5.15.0/single/下载 qt-everywhere-src-5.15.0. tar.xz 到 Linux 系统下并解压:

xz -d qt-everywhere-src-5.15.0.tar.xz

tar -xvf qt-everywhere-src-5.15.0.tar

cd qt-everywhere-src-5.15.0

作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第3张图片
新建编译脚本 make.sh(也可以从 test/qt/make_static.sh 获得)

touch make.sh

chmod a+x make.sh

作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第4张图片

vi make.sh

作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第5张图片
修改 qmake.conf:

vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第6张图片
开始交叉编译:

./make.sh

#!/bin/sh
PWD=pwd
mkdir install
./configure
-prefix $PWD/install
-static \ -release \
-opensource \
-xplatform linux-arm-gnueabi-g++
-optimized-qmake -pch
-qt-libjpeg
-qt-libpng \
-qt-zlib \
-no-opengl \
-skip qt3d \
-skip qtcanvas3d
-skip qtpurchasing \
-skip qtlocation \
-skip qttools \
-no-sse2 \
-no-openssl
-no-cups \
-no-glib \
-no-iconv \
-tslib \
-linuxfb \
-I /home/ronnie/work/ssd201/qt/tslib-1.15/install/include
-L /home/ronnie/work/ssd201/qt/tslib-1.15/install/lib \
-recheck-all \
-make examples
make -j16
make install
等待一段时间后,configure 完成,提示:Do you accept the terms of either license? 输 入 yes 并按回车,继续编译直至完成(编译时间长短由系统配置决定),将会在 install 目录生成我们需要的文件:
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第7张图片
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第8张图片
设置 qmake 环境变量:

vi ~/.bashrc

export PATH=/home/ronnie/work/ssd201/qt/qt-everywhere-src-5.15.0/install/bin:$PATH
在这里插入图片描述

source ~/.bashrc

在这里插入图片描述
动态编译
操作步骤和静态编译一样,唯一的区别是 make.sh 不同(也可以从 test/qt/make_s hare.sh 获得):

vi make.sh

!/bin/sh
PWD=pwd
mkdir install
./configure \
-prefix $PWD/install \
-release \
-opensource \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake -pch \
-qt-libjpeg
-qt-libpng \
-qt-zlib \
-no-opengl \
-skip qt3d \
-skip qtcanvas3d
-skip qtpurchasing
-skip qtlocation \
-skip qttools \
-no-sse2
-no-openssl \
- no-cups \
- -no-glib \
- -no-iconv \
- -tslib \
- -linuxfb \
- -I /home/ronnie/work/ssd201/qt/tslib-1.15/install/include \
- -L /home/ronnie/work/ssd201/qt/tslib-1.15/install/lib
- -recheck-all
- -make examples make -j16 make install

初始化屏幕

在 QT 应用程序执行前,需要先初始化屏幕,否则无法正常显示。屏幕初始化可以 参考 JpegPlayer/的 logo.c。
将 test/JpegPlayer.tar 下载到 Linux 系统下,并解压到 project 同级目录下:
进入解压目录,并将 logo.c 拷贝为 disp_init.c:
修改 disp_init.c,将初始化以外的代码删除:
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第9张图片
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第10张图片
将已经调好的屏参头文件拷贝到 JpegPlayer 目录下:
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第11张图片
修改 sstardisp.c,将屏参头文件包含:
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第12张图片
修改 makefile
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第13张图片
编译,将在目录下生成 disp_init 可执行文件:

make

作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第14张图片
验证QT
Example
在 qt5 中自带了一些 examples 工程,我们可以通过这个 demo 来验证我们上面 的工作是否正确,或者验证某些功能。这些 examples 工程位于 qtbase/examples 目 录下:
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第15张图片

静态编译

静态编译时,我们需要指定 QTPLUGIN 为 qlinuxfb,通过工程的.pro 来配置, 假设我们要验证的 demo 为 qtbase/examples/widgets/widgets/analogclock,则需要 修改 qtbase/examples/widgets/widgets/analogclock/analogclock.pro:

vi qtbase/examples/widgets/widgets/analogclock/analogclock.pro

在末尾加一行 “QTPLUGIN
+= qlinuxfb”
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第16张图片
接着重新编译(由于前面已经编译过了,这里实际只编译刚刚修改的 examples):

make -j16

操作完成后,可以看到 qtbase/examples/widgets/widgets/analogclock/analogclock 重新生成了,我们执行以下步骤将 analogclock 放到板子上跑起来:
将编译好的 disp_init 程序(在初始化屏幕一节中获得)拷贝到板子上
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第17张图片
将刚刚生成的 analogclock 拷贝到板子上
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第18张图片
把 tslib 编译生成的 lib、bin 和 etc 目录下的文件(从 TSLIB 编译获得)分 别拷贝到板子的/usr/lib、/usr/bin 和 etc 目录下
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第19张图片
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第20张图片
将字库文件拷贝到板子的/usr/share/font 目录下
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第21张图片
运行 disp_init,初始化屏幕显示
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第22张图片
如果是电阻屏,需要先使用 ts_calibrate 来校准
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第23张图片
新建 qt_static_env.sh,内容如下
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export QT_QPA_PLATFORM=linuxfb
export QT_QPA_FONTDIR=/usr/share/font
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第24张图片
作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植_第25张图片

你可能感兴趣的:(QT,SSD201,SSD202)