# 准备工作
1.qt5.12.2下载网址
中国科学技术大学:http://mirrors.ustc.edu.cn/qtproject/
清华大学:https://mirrors.tuna.tsinghua.edu.cn/qt/
北京理工大学:http://mirror.bit.edu.cn/qtproject/
中国互联网络信息中心:https://mirrors.cnnic.cn/qt/
http://download.qt.io/
2.tslib的下载
https://github.com/libts/tslib/releases
下载版本tslib-1.22.tar.bz2
3.交叉编译环境
使用Ubuntu18.04
4.交叉编译链
这个是客户指定的,我的是host_rk3308_toolchain.tar.gz
直接解压
配置环境变量,使得交叉编译环境开机生效
# 交叉编译
a.tslib的交叉编译
sudo apt-get install automake
sudo apt-get install autogen
sudo apt-get install libtool
./configure --prefix=/home/jhd/arm_tslib --host=aarch64-linux ac_cv_func_malloc_0_nonnull=yes
其中--host=该软件将运行的平台,--prefix交叉编译完生成库的位置
查看日志
故进行下列操作
再次执行./configure --prefix=/home/jhd/arm_tslib --host=aarch64-linux ac_cv_func_malloc_0_nonnull=yes
然后make install可看到生成了arm_tslib库
b.qt5.12.2的解压缩
下载后文件为qt-everywhere-src-5.12.2.tar.xz
xz -d qt-everywhere-src-5.12.2.tar.xz 解压为tar后缀的
tar -xvf qt-everywhere-src-5.12.2.tar
cd qt-everywhere-src-5.12.2
gedit qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
可执行./configure -help查看具体参数配置
编写脚本autoconfig.sh
#!/bin/sh
./configure -prefix /home/jhd/qt5.12.2-aarch64 \
-opensource \
-release \
-no-pch \
-confirm-license \
-xplatform linux-aarch64-g++ \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-iconv \
-no-opengl \
-skip qtdeclarative \
-skip qtquickcontrols \
-skip qtquickcontrols2 \
-skip qt3d \
-skip qtcanvas3d \
-skip qttools \
-no-cups \
-no-glib \
-no-dbus \
-no-rpath \
-no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 \
-no-avx \
-no-openssl \
-qreal float \
-nomake examples \
-linuxfb \
-I /home/jhd/arm_tslib/include \
-L /home/jhd/arm_tslib/lib
其中-I /home/jhd/arm_tslib/include 为上面tslib交叉编译后生成的include路径;-L /home/jhd/arm_tslib/lib为上面tslib交叉编译后生成的lib路径
再普通用户下执行chmod +x autoconfig.sh
然后执行./autoconfig.sh
然后make -j4
make install
C.qt程序编译生成目标平台可执行文件
在ubuntu中打开qtcreator
然后编译生成可执行文件
#移植到arm上运行qt程序
(a)环境配置
把上面qt5.12.2-aarch64的库中lib和plugins文件夹打包为qt5.12.2-aarch64.zip或者qt5.12.2-aarch64.tar
把arm_tslib库打包成arm_tslib.tar
然后通过usb或者串口或者scp或者ftp拷贝到板卡中的/userdata/BullDemo目录下
在开发板中执行 vi /etc/profile 或者 ~/.bashrc ;
//下面/userdata/BullDemo/qt5.12.2-aarch64为QT库放的位置
/userdata/BullDemo/qt5.12.2-aarch64/aarch64_tslib为tslib库所在位置
在最后写
export QTDIR=/userdata/BullDemo/qt5.12.2-aarch64
export LD_LIBRARY_PATH=$QTDIR/lib:/userdata/BullDemo/qt5.12.2-aarch64/aarch64_tslib/lib:/usr/lib:/lib:
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export QT_QPA_FONTDIR=$QTDIR/lib/fonts
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export T_ROOT=/userdata/BullDemo/qt5.12.2-aarch64/aarch64_tslib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export QT_QPA_GENERIC_PLUGINS=tslib
然后 source /etc/profile 或者 source ~/.bashrc
(2)触摸屏验证
首先要验证触摸屏,上面TSLIB_TSDEVICE=/dev/input/event0为指定触摸屏设备
执行cat /dev/input/event0或者cat /dev/input/event0 正常的话,触摸屏会有乱码。
然后执行触摸屏校准, /userdata/BullDemo/qt5.12.2-aarch64/aarch64_tslib/bin/ts_calibrate
此时屏幕会出现坐标点,依次点击后会生成文件/etc/pointercal,该文件目录不要更改。
(3)运行可执行程序
./BullDemo -platform linuxfb -plugin tslib
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」