qt移植到讯为rk3568,包含一些错误总结
qt移植到arm报错动态库找不到
error while loading shared libraries: libAlterManager.so.1: cannot open shared object file: No such file or directory
通过设置环境变量 LD_LIBRARY_PATH就行了。
LD_LIBRARY_PATH是一个用于指定动态链接器在运行时搜索共享库的路径的环境变量。
例如:
前提:所有用到的文件包括库文件都在你程序目录下。
①在你程序目录下创建一个脚本文件test.sh
②编辑test.sh
export ARM_DIR=`pwd`
export APP_DIR=`pwd`
export LD_LIBRARY_PATH=$ARM_DIR/lib#lib是你的程序文件夹里面的库文件夹,名字根据自己的修改
$APP_DIR/exe(exe:你的arm程序)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在讯为给的资料中,一个是 etc/profile配置文件中,配置了

export PATH=/bin:/sbin:/usr/bin:/usr/sbinif [ "$PS1" ]; thenif [ "`id -u`" -eq 0 ]; thenexport PS1='[\u@\h:\w]# 'elseexport PS1='[\u@\h:\w]$ 'fi
fiexport PAGER='/bin/more '
export EDITOR='/bin/vi'# Source configuration files from /etc/profile.d
for i in /etc/profile.d/*.sh ; doif [ -r "$i" ]; then. $ifiunset i
done
export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:
export LS_COLORS
resize
/*添加下面两种不同的 /etc/profile内容时,屏幕界面不正常显示,出来个格子界面,Mobaxter的串口通信界面显示堆栈错误*/
经过逐行排查 ,是倒数第三行的问题
# 设置Qt平台为linuxfb,并指定帧缓冲设备为/dev/fb0
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
可以
-
指定正确的图形平台:
如果您的系统使用的是 X11,您应该设置QT_QPA_PLATFORM为xcb:export QT_QPA_PLATFORM=xcb如果您的系统使用的是 Wayland,则应该设置为
wayland:export QT_QPA_PLATFORM=wayland请根据您的系统配置选择正确的平台。
Wayland是显示服务器与客户端通信的协议库。Weston是Wayland的参考实现,提供完整环境及测试程序。
2. 杠掉,会自动用默认的
# 设置核心转储文件大小为0,并将标准输出和标准错误重定向到/dev/null,即丢弃所有输出
ulimit -S -c 0 > /dev/null 2>&1# 获取当前用户的用户名,并将其存储在USER变量中
USER="`id -un`"# 将LOGNAME变量设置为与USER变量相同的值
LOGNAME=$USER# 设置PS1环境变量,定义命令行提示符的格式
# 这里的格式是:[用户名@主机名]:当前工作目录#
PS1='[$USER@$HOSTNAME]:$PWD# '# 将PATH环境变量设置为其当前值(这里实际上是多余的,因为后面没有改变PATH的值)
PATH=$PATH# 获取主机名,并将其存储在HOSTNAME变量中
HOSTNAME=`/bin/hostname`# 导出USER, LOGNAME, PS1, PATH, HOSTNAME变量,使它们在当前shell会话及其子进程中可用
export USER LOGNAME PS1 PATH HOSTNAME# 从/proc/bus/input/devices文件中查找包含'ft5x06'或'goodix-gt911'的行及其后4行
# 然后从这些行中提取第95个字符之前的字符串(实际上是取倒数第5到第10个字符,因为tail -n1取的是最后一行)
# 最后,使用cut命令从第13到第18个字符之间提取事件设备名称,存储在EVENT变量中
EVENT=$(cat /proc/bus/input/devices | grep -E 'ft5x06|goodix-gt911' -A4 | tail -n1 | head -c 95 | cut -c13-18)# 设置tslib的根目录环境变量
export TSLIB_ROOT=/qt/opt/tslib1.4# 设置Qt的根目录环境变量
export QT_ROOT=/qt/opt/qt5.15.2# 设置触摸屏输入设备的环境变量,使用之前从/proc/bus/input/devices中提取的EVENT变量
export TSLIB_TSDEVICE=/dev/input/$EVENT# 设置触摸屏事件类型的环境变量
export TSLIB_TSEVENTTYPE=input# 设置tslib配置文件的环境变量
export TSLIB_CONFFILE=/qt/opt/tslib1.4/etc/ts.conf# 设置tslib插件目录的环境变量
export TSLIB_PLUGINDIR=/qt/opt/tslib1.4/lib/ts# 设置控制台设备为none,表示不使用控制台设备
export TSLIB_CONSOLEDEVICE=none# 设置帧缓冲设备为/dev/fb0
export TSLIB_FBDEVICE=/dev/fb0# 设置LD_PRELOAD环境变量,预加载tslib的库文件
export LD_PRELOAD=$TSLIB_ROOT/lib/libts.so# 设置Qt的鼠标协议为tslib,并使用之前提取的EVENT变量指定输入设备
export QWS_MOUSE_PROTO=tslib:/dev/input/$EVENT# 设置LD_LIBRARY_PATH环境变量,包含多个库目录,确保运行时能找到所需的库文件
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib:$TSLIB_ROOT/lib:$TSLIB_ROOT/lib/# 设置Qt平台插件目录的环境变量
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins# 设置Qt平台为linuxfb,并指定帧缓冲设备为/dev/fb0
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0# 设置Qt字体目录的环境变量
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts# 设置Qt使用的通用插件为tslib
export QT_QPA_GENERIC_PLUGINS=tslib export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM#放入的tslib目录
export TS_ROOT=/usr/local/tslib
export LD_LIBRARY_PATH=$TS_ROOT/lib:$LD_LIBRARY_PATH
export PATH=$TS_ROOT/bin:$PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=$TS_ROOT/etc/pointercal
export TSLIB_CONFFILE=$TS_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TS_ROOT/lib/ts
# qt
# 放入的qt目录
export QT_ROOT=/usr/local/qt
export LD_LIBRARY_PATH=$QT_ROOT/lib/:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0:inverty
export QT_QPA_FB_TSLIB=1
export LD_PRELOAD=$TS_ROOT/lib/libts.so 报错
[root@topeet:/qt/opt]# ./tslib1.4/bin/ts_calibrate
fopen: No such file or directory
Couldnt load module linear
ts_config: No such file or directory
ts_setup: No such file or directory
解决
将 ts.conf中的module linear那行直接注释掉即可
![]()
设置横屏
查看显示屏名称
使用 ls /sys/class/drm/ 命令查看显示屏名称,如下图所示,
![]()
可知我这里用的是DSI屏,DSI-1就是屏幕的名称。另外还有HDMI屏等。
修改weston.ini配置文件
编辑 /etc/xdg/weston/weston.ini文件,在文件末尾增加以下语句,随后保存重启即可。
[output]
name=HDMI-A-1 //设备名称
transform=90 //旋转角度为90度
我这里设置以后,重启,屏幕卡在kernel界面进不了桌面
参考文档,使用
echo "output:all:rotate90" > /tmp/.weston_drm.conf # 所有屏幕旋转90度
解决。
至于原因,参考设备树设置。官方文档或者其他博客都有介绍。

buildroot添加桌面应用
添加桌面应用需要准备三个文件:
桌面图标文件、xxx.desktop文件、可执行应用文件
矢量图
阿里巴巴矢量图网站进行下载,图标的尺寸为128x128
https://www.iconfont.cn/
xx.desktop文件
[Desktop Entry]
Name=Touch # 应用名称
Exec=/usr/bin/Touch # 执行命令
Icon=/usr/share/icon/ico_touch.png # 图标路径
Type=Application # 类型:应用程序//我用的是
[Desktop Entry]
Name=Usart # 应用名称
Exec=/qt/opt/untitled2 # 执行命令
Icon=/usr/share/icon/sdw.png # 图标路径
Type=Application # 类型:应用程序
可执行应用文件
交叉编译得到的 qt可执行程序。
开发板上的准备
图标文件放到 /usr/share/icon
应用程序 随便放,可以是 /usr/bin
配置文件 .desktop放到 /usr/share/applications
然后重启开发板,就可以看到效果

可执行程序开机自启动
1. 使用init.d脚本
对于使用Linux系统的RK3568开发板,可以通过在/etc/init.d/目录下添加一个自启动脚本,并设置其权限和启动顺序来实现开机自启动。
步骤:
创建脚本:在/etc/init.d/目录下创建一个新的脚本文件,例如mystartup.sh。
编辑脚本:在脚本文件中添加启动你的可执行程序的命令。例如:
#!/bin/sh # 使用sh解释器执行此脚本
/usr/bin/myexecutable & # 在后台启动myexecutable程序
确保将/usr/bin/myexecutable替换为你的可执行程序的实际路径。
重新加载systemd配置:使用systemctl daemon-reload命令重新加载systemd配置。
启用服务:使用systemctl enable mystartup.service命令启用服务,使其在开机时自动启动。
2. 修改rcS文件(针对Buildroot系统)
如果你的RK3568开发板使用的是Buildroot构建的系统,并且根文件系统是基于BusyBox的,你可以直接在/etc/init.d/rcS文件中添加启动命令。
步骤:
编辑rcS文件:使用文本编辑器打开/etc/init.d/rcS文件。
添加启动命令:在文件的末尾或其他合适的位置添加启动你的可执行程序的命令。例如
/usr/bin/myexecutable &
相关文章:
qt移植到讯为rk3568,包含一些错误总结
qt移植到arm报错动态库找不到 error while loading shared libraries: libAlterManager.so.1: cannot open shared object file: No such file or directory 通过设置环境变量 LD_LIBRARY_PATH就行了。 LD_LIBRARY_PATH是一个用于指定动态链接器在运行时搜索共享库的路径的环…...
使用阿里云快速搭建 DataLight 平台
使用阿里云快速搭建 DataLight 平台 本篇文章由用户 “闫哥大数据” 分享,B 站账号:https://space.bilibili.com/357944741?spm_id_from333.999.0.0 注意:因每个人操作顺序可能略有区别,整个部署流程如果出现出入,以…...
ubuntu设置自启动
1. 把要启动的程序或者脚本(比如A.sh、A1)放在 /usr/sbin 目录中。比如我的 A.sh 只是启动 A1 程序: #!/bin/bash/usr/sbin/A1echo "A1 finish!!!" 需要注意的是,脚本和程序都要有可执行的权限才行 2. 在 /etc/systemd/system 目录中创建 .…...
Paddle分布式训练报NCCL错
应该是没有装NCCL,但是通过NVIDIA官网方式用apt安装报错,说nccl签名有问题 打开官网查找对应版本的nccl:https://developer.nvidia.com/nccl/nccl-legacy-downloads 这里不下载local Ubuntu选项,下载O/S agnostic local install…...
PD3.1快充对我们到底有没有必要?
在科技飞速发展的今天,各种智能设备和电子产品已经渗透到了我们生活的方方面面。随之而来的,是对充电速度和效率的不断追求。正是在这样的背景下,USB联盟于2021年6月发布了最新的快充协议——PD3.1。那么,PD3.1快充协议对我们到底…...
Android OpenGL ES详解——立方体贴图
目录 一、概念 二、如何使用 1、创建立方体贴图 2、生成纹理 3、设置纹理环绕和过滤方式 4、激活和绑定立方体贴图 三、应用举例——天空盒 1、概念 2、加载天空盒 3、显示天空盒 4、优化 四、应用举例——环境映射:反射 五、应用举例——环境映射:折射 六、应用…...
Bugku CTF_Web——字符?正则?
Bugku CTF_Web——字符?正则? 进入靶场 <?php highlight_file(2.php); $keyflag{********************************}; $IM preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match); if…...
C# 中Math.Round 和 SQL Server中decimal(18,2) 不想等的问题
首先了解Math.Round方法的默认舍入规则 在C#中,Math.Round方法使用的是“银行家舍入法”(也叫四舍六入五成双)。这种舍入规则是:当要舍弃的数字小于5时直接舍去;当要舍弃的数字大于5时进位;当要舍弃的数字正…...
lab2:docker基础实战
一、实验目的 1.通过本次实验,完成Docker主机的安装和配置、镜像的搜索和下载、容器生命周期的基本管理、容器网络的管理。 2.通过Dockerfile来构建nginx镜像,了解Dockerfile镜像构建过程。 二、实验内容与实验要求 1.完成Docker的安装和配置。 2.完…...
Druid 1.2 源码导读
Druid 是阿里巴巴开源的数据库连接池和监控组件,广泛用于 Java 应用程序中。Druid 1.2 版本提供了高性能的连接池和丰富的监控功能。以下是对 Druid 1.2 源码的导读,帮助你理解其架构和设计。 1. 源码获取 从 GitHub 上获取 Druid 1.2 的源码ÿ…...
千益畅行,共享旅游卡市场乱象解析与未来展望
在当今旅游市场蓬勃发展的大背景下,共享旅游卡作为一种新兴的旅游消费模式,受到了广泛关注。然而,伴随着其快速发展,市场乱象也层出不穷。作为千益畅行共享旅游卡的全国运营总监,我深感有必要对这些问题进行深入剖析&a…...
Dubbo源码解析-服务导出(四)
一、服务导出 当我们在某个接口的实现类上加上DubboService后,就表示定义了一个Dubbo服务,应用启动时Dubbo只要扫描到了DubboService,就会解析对应的类,得到服务相关的配置信息,比如: 1. 服务的类型&…...
浅谈React的虚拟DOM
React的虚拟DOM:揭秘高效渲染的秘密 在React中,虚拟DOM(Virtual DOM)是一个核心概念,它是React能够提供高效渲染和更新的关键。虚拟DOM是一个轻量级的JavaScript对象,表示真实的DOM树。通过使用虚拟DOM&am…...
linux上海康SDK安装并设置环境变量
将HCNetSDK下linux部分复制到客户端电脑/usr/lib/HCNetSDK下:sudo cp -r H /usr/lib/HCNetSDK H是我的文件夹,要把这个文件夹的内容复制到/usr/lib/HCNetSDK路径里。 编辑:vi ~/.bashrc 找到export,按 i 插入换行添加 export LD_LIBRARY_PATH$LD_LIB…...
【计算机网络】UDP网络程序
一、服务端 1.udpServer.hpp 此文件负责实现一个udp服务器 #pragma once#include <iostream> #include <string> #include <cstdlib> #include <cstring> #include <functional> #include <strings.h> #include <unistd.h> #incl…...
什么是全域电商?有哪些电商代运营公司能做全域电商代运营?
什么是全域电商?有哪些电商代运营公司能做全域电商代运营? 随着电商行业的迅猛发展,传统的单一平台运营模式已经无法满足品牌多元化发展的需求。在此背景下,全域电商作为一种新兴的运营方式应运而生,成为越来越多品牌在…...
微信小程序上传pdf和显示
引用:https://blog.csdn.net/qq_54027065/article/details/129854339 loadResume(){let that thisuni.showLoading({title:"下载中"})wx.downloadFile({url:url,success:(res)>{console.log(res,"res11111")if (res.statusCode 200){setTi…...
MongoDB分布式集群搭建----副本集----PSS/PSA
MongoDB分布式集群 Replication 复制、Replica Set 复制集/副本集 概念 一、 副本集的相关概念 1.概念 “ A replica set is a group of mongod instances that maintain the same data set. ” 一组MongoDB服务器(多个mongod实例)(有不…...
PDF编辑的好东西
1.Eage浏览器 直接拖到浏览器中就ok了,这样读书的话是非常爽的,然后的话最近,也不知道学啥,vue开发网站,一开始的配置,也是给我难到了,所以没有办法,就随便找点书看看吧,…...
块设备的两种访问方法的区别
概述 1.当我们运行类似于“dd if/dev/sdb1ofsdb1.img”的命令把整个/dev/sdb1裸分区复制到sdb1.img的时候,内核走的是def_blk_fops这个file_operations 2.另外一种方法是通过文件系统来访问块设备,file_operations的实现则位于文件系统内,文…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
