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配置文件中,配置了

讯为提供的内核镜像 /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

可以

  1. 指定正确的图形平台
    如果您的系统使用的是 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 &

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开发基础】语义化版本控制

语义化版本控制 基础三级结构主版本号次版本号修正版本号 思维导图在node包管理中的特殊规则 参考文件 基础 语义化版本控制是一套通用的包/库的版本管理规范。在各类语言的包管理中都有用到,一般以x.x.x的形式出现在包的命名中。 三级结构 在语义化版本控制中&a…

前端导出excel表格功能

缘由 大家好, 最近公司在做一个类似医疗的项目,由于前端的开发人员有些许变故,而且公司暂时没有找到合适的前端开发人员。所以,前端开发的任务也落在了我们后端的身上。没办法,时间紧任务重,只能硬着头皮上…

Dubbo 3.x源码(25)—Dubbo服务引用源码(8)notify订阅服务通知更新

基于Dubbo 3.1,详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了接口级的服务引入订阅的refreshInterfaceInvoker方法,当时还有最为关键的notify服务通知更新的部分源码没有学习,本次我们来学习notify通知本地服务更新的源码。 Dubb…

使用 Ansys Mechanical 中的“螺栓工具”插件导出螺栓反作用力

概括: 对于处理复杂组件和结构的工程师和分析师来说,提高在 Ansys Mechanical 中提取多个螺栓反作用力表格的效率至关重要。在有限元分析 (FEA) 中,准确确定螺栓上的反作用力对于评估机械连接的完整性和性能至关重要。但是,手动提…

Docker部署Kafka SASL_SSL认证,并集成到Spring Boot

1,创建证书和密钥 需要openssl环境,如果是Window下,下载openssl Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 还需要keytool环境,此环境是在jdk环境下 本案例所使用的账号密码均为: ka…

机器学习(基础2)

特征工程 特征工程:就是对特征进行相关的处理 一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程 特征工程是将任意数据(如文本或图像)转换为可用于机器学习的数字特征,比如:字典特征提取(特征离散化)、文本特征提取、图像特征提取。 特征工程API 实例化…

CSS Module:告别类名冲突,拥抱模块化样式(5)

CSS Module 是一种解决 CSS 类名冲突的全新思路。它通过构建工具(如 webpack)将 CSS 样式切分为更加精细的模块,并在编译时将类名转换为唯一的标识符,从而避免类名冲突。本文将详细介绍 CSS Module 的实现原理和使用方法。 1. 思…

webpack案例----pdd(anti-content)

本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除! 目标网址:aHR0cHM6Ly9waW5kdW9kdW8uY29tL2hvbWUvM2M 加密参数:anti_content 载荷里面的rn是不变的 发现加密是anti-con…

Flume1.9.0自定义Sink组件将数据发送至Mysql

需求 1、将Flume采集到的日志数据也同步保存到MySQL中一份,但是Flume目前不支持直接向MySQL中写数据,所以需要用到自定义Sink,自定义一个MysqlSink。 2、日志数据默认在Linux本地的/data/log/user.log日志文件中,使用Flume采集到…

T265相机双目鱼眼+imu联合标定(全记录)

最近工作用到t265,记录一遍标定过程 1.安装驱动 首先安装realsense驱动,因为笔者之前使用过d435i,装的librealsense版本为2.55.1,直接使用t265会出现找不到设备的问题,经查阅发现是因为realsense在2.53.1后就不再支持…

RT-DETR融合[CVPR2023]FasterNet种的PConv及相关改进思路

RT-DETR使用教程: RT-DETR使用教程 RT-DETR改进汇总贴:RT-DETR更新汇总贴 《Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks》 一、 模块介绍 论文链接:Run, Dont Walk: Chasing Higher FLOPS for Faster Neural Netwo…

【测试框架篇】单元测试框架pytest(2):用例编写

一、 前言 前面一章我们介绍了pytest环境安装和配置,并在pycharm里面实现了我们第一个pytest脚本。但是有些童鞋可能在编写脚本的时候遇到了问题,本文会讲一下我们编写pytest用例时需要遵守哪些既定的规则,同时这个规则也是可以修改的。 二…

嵌入式硬件电子电路设计(五)MOS管详解(NMOS、PMOS、三极管跟mos管的区别)

引言:在我们的日常使用中,MOS就是个纯粹的电子开关,虽然MOS管也有放大作用,但是几乎用不到,只用它的开关作用,一般的电机驱动,开关电源,逆变器等大功率设备,全部使用MOS管…

Conda安装软件错误(Pycharm)

conda的环境变量路径错误,比如移动了conda的文件位置conda的python版本不适合,python3.10现在更适合很多库conda对cmd没有初始化,conda init cmd.exe

《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信

《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信 《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信进程间通信的基本概念通过管道实现进程间通信通过管道进行进程间双向通信 运用进程间通信习题(1)什么是进程间通信&…

推荐一款高效的网站数据抓取工具:SysNucleus WebHarvy

SysNucleus WebHarvy是一款高效的网站数据抓取工具,支持从网页中提取文本、图像、URL 和电子邮件等内容,无需编写任何代码或脚本即可轻松实现数据抓取。用户可以通过 WebHarvy 内置的浏览器直观地浏览网页,指引软件提取所需的数据。它通过自动…

道陟科技EMB产品开发进展与标准设计的建议|2024电动汽车智能底盘大会

11月12日,2024电动汽车智能底盘大会在重庆开幕。会议由中国汽车工程学会主办,电动汽车产业技术创新战略联盟、中国汽车工程学会智能底盘分会、智能绿色车辆与交通全国重点实验室承办。本届大会围绕电动汽车智能底盘相关技术发展与融合,满足高…

Spring Authorization Server OAuth2.1

Spring Authorization Server介绍 Spring Authorization Server 是一个框架,它提供了 OAuth 2.1 和 OpenID Connect 1.0 规范以及其他相关规范的实现。 它建立在 Spring Security 之上,为构建 OpenID Connect 1.0 身份提供者和 OAuth2 授权服务器产品提供…

C++ 优先算法 —— 三数之和(双指针)

目录 题目:三数之和 1. 题目解析 2. 算法原理 ①. 暴力枚举 ②. 双指针算法 不漏的处理: 去重处理: 固定一个数 a 的优化: 3. 代码实现 Ⅰ. 暴力枚举(会超时 O(N)) Ⅱ.…

(三十三)队列(queue)

文章目录 1. 队列(queue)1.1 定义1.2 函数1.3 习题1.3.1 例题(周末舞会) 2. 双向队列(deque)2.1 定义2.2 函数2.3 题目2.3.1 例题(打BOSS) 1. 队列(queue) 队…