设置Linux开发板开机自启动QT程序的报错解决办法

设置Linux开发板开机自启动QT程序报错解决办法

设置开发板开机自启动QT

打开 /etc/init.d/rsC 文件,添加以下内容

cd /
./my_start_run.sh

my_start_run.sh 是自己编写的自启动脚本,内容例如下:(也可以将这些直接写到 /etc/init.d/rsC 文件最后)

PS:下面这个脚本是最终的脚本,文章所展示的是我解决问题的调试过程,最后发现只需要加一句 source /etc/profile 即可

# 自启动程序

source /etc/profile   # 刷新Qt的运行环境

######### 下面是自己的自启动程序 #########
./qt_projects/01.智能家居/insmod.sh  # 加载驱动

sleep 2 

echo "01_test_v2 run......"
    
./qt_projects/01.智能家居/01_test_v2 &  # 运行QT程序,&表示在后台运行
报错一:error while loading shared libraries: libQt5Widgets.so.5: cannot open shared object file: No such file or directory

但是开发板启动后报错了,报错信息如下:
在这里插入图片描述

  • 解决报错:设置链接库路径

    在移植QT的时候我们设置了一些链接库的路径,终端里运行

echo $LD_LIBRARY_PATH

在这里插入图片描述

将这些路径复制下来,添加到 LD_LIBRARY_PATH 环境变量中,添加内容后的启动脚本如下所示

#!/bin/sh

export LD_LIBRARY_PATH=/usr/lib/arm-qt/lib:/usr/lib/arm-qt/plugins/platforms:/usr/lib/arm-tslib/lib:$LD_LIBRARY_PATH  # 设置动态连接库路径

######### 下面是自己的自启动程序 #########
# 自启动程序
./qt_projects/01.智能家居/insmod.sh  # 加载驱动

sleep 2 
echo "01_test_v2 run......"
./qt_projects/01.智能家居/01_test_v2 &  # 运行QT程序,&表示在后台运行

然后重启开发板,出现新报错

报错二:qt.qpa.plugin: Could not find the Qt platform plugin “linuxfb” in “”

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=Typora_images%2F%E8%AE%BE%E7%BD%AE%E5%BC%80%E6%9C%BA%E5%90%AF%E5%8A%A8QT%E7%A8%8B%E5%BA%8F%E6%8A%A5%E9%94%99%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95.assets%2Fimage-在这里插入图片描述
.png&pos_id=img-QXpoSxcP-1713850274268)

  • 解决报错:设置Qt 应用程序查找插件的路径

终端运行如下命令

echo $QT_PLUGIN_PATH

在这里插入图片描述

将这些路径复制下来,添加到 QT_PLUGIN_PATH 环境变量中,添加内容后的启动脚本如下所示

#!/bin/sh

export LD_LIBRARY_PATH=/usr/lib/arm-qt/lib:/usr/lib/arm-qt/plugins/platforms:/usr/lib/arm-tslib/lib:$LD_LIBRARY_PATH  # 设置动态连接库路径

export QT_PLUGIN_PATH=/usr/lib/arm-qt/plugins  # 指定 Qt 插件路径

######### 下面是自己的自启动程序 #########
# 自启动程序
./qt_projects/01.智能家居/insmod.sh     # 加载驱动

sleep 2 
echo "01_test_v2 run......"
./qt_projects/01.智能家居/01_test_v2 &  # 运行QT程序,&表示在后台运行

然后重启开发板,出现新报错

报错三:random: nonblocking pool is initialized

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-’
QFontDatabase: Cannot find font directory /home/me/qt-everywhere-src-5.12.9/arm-qt/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from https://dejavu-fonts.github.io/ for example) or switch to fontconfig.

在这里插入图片描述

  • 解决报错

终端运行如下命令,获取 XDG_RUNTIME_DIR 环境变量的值

echo $XDG_RUNTIME_DIR

在这里插入图片描述

在系统中寻找 fonts 文件

find / -name "fonts"

在这里插入图片描述

将这些路径复制下来,修改启动脚本如下所示

#!/bin/sh

export LD_LIBRARY_PATH=/usr/lib/arm-qt/lib:/usr/lib/arm-qt/plugins/platforms:/usr/lib/arm-tslib/lib:$LD_LIBRARY_PATH  # 设置动态连接库路径

export QT_PLUGIN_PATH=/usr/lib/arm-qt/plugins  # 指定 Qt 插件路径

export XDG_RUNTIME_DIR=/usr/lib   # Qt 将使用默认的运行时目录

export QT_QPA_FONTDIR=/usr/share/fonts   # Qt加载字体的目录

######### 下面是自己的自启动程序 #########
# 自启动程序
./qt_projects/01.智能家居/insmod.sh     # 加载驱动

sleep 2 
echo "01_test_v2 run......"
./qt_projects/01.智能家居/01_test_v2 &  # 运行QT程序,&表示在后台运行

  • 最终终于实现了开机自启动

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法刷题 | 贪心算法02】4.24(摆动序列)

文章目录 3.摆动序列3.1题目3.2解法:贪心3.2.1贪心思路3.2.2代码实现 3.摆动序列 3.1题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。 第一个差(如果存在的话)可能是正数或负数。仅有一个元素…

嵌入式总线协议基础教学

在嵌入式系统设计中,总线协议(bus protocols)扮演着至关重要的角色,它们定义了设备如何在共享通信路径上交换数据。 本文将介绍两种常见的嵌入式总线协议:IC(Inter-Integrated Circuit)和SPI&a…

BFS解决FloodFill算法:(Leetcode:733. 图像渲染)

题目链接:733. 图像渲染 - 力扣(LeetCode) 使用广度优先遍历算法解决该问题: 从初始位置开始搜索,初始位置符合条件就入栈,并修改初始位置值。初始位置出栈。 再从初始位置开始广度优先搜索(…

IDM下载器安装cmd注册

一、下载注册 安装包去IDM官网下载最新的试用版即可 或者直达百度网盘下载(担心被河蟹,放在txt中了)包含IDM下载器安装包和注册软件 IDM下载器安装包和注册软件下载地址链接 https://download.csdn.net/download/qq_31237581/89215452 如果…

sscanf和scanf区别

sscandf 从字符串中提取数据 scanf 标准输入流读取数据 int num; sscanf("42", "%d", &num);float f; sscanf("3.14", "%f", &f);char str[20]; sscanf("Hello, World!", "%s", str);int a, b; sscanf(…

vue3 引入@tsparticles/vue3和@tsparticles/slim 实现粒子特效

1.安装: yarn add tsparticles/vue3 tsparticles/slim2.main.ts 引入 import Particles from "tsparticles/vue3"; import { loadSlim } from "tsparticles/slim";app.use(Particles as any, {init: async (engine: any) > {await loadSli…

POJO,Entity,model,domain,view,DTO,VO,Param这些分别都是什么含义?怎样理解?

目录 1. 前言 2. POJO的含义 3. entity(实体) 4. model(模型) 5. domain(域) 6. view(视图) 7. DTO(数据传输对象) 8. VO(真正视图层) 9. Param(参数) 10. 总结 1. 前言 在日常开发的过程中,如果我们接手一个新的项目之后,通常会有各种各样的…

edu邮箱官方购买渠道手把手选购指南记录

教育优惠,是一项针对于在校大学生和教职员工推出的特殊优惠活动。一些公司会将旗下产品或服务以一定的折扣,甚至免费提供给高校师生。想想自己上大学的时候啥都不知道,毕业后才发现浪费了这么多优秀的资源.如果你还是一名在校大学生,那么就不…

40. 【Android教程】AsyncTask:异步任务

在前面的章节有提到过,Android 系统默认会在主线程(UI 线程)执行任务,但是如果有耗时程序就会阻塞 UI 线程,导致页面卡顿。这时候我们通常会将耗时任务放在独立的线程,然后通过 Handler 等线程间通信机制完…

扁平与圆形Cat6网线:区别与选择指南

🌵在构建家庭或办公室网络时,选择合适的网线类型至关重要。Cat6网线因其高速传输性能而广受欢迎,但在购买时,您可能会发现市场上有两种不同形状的Cat6网线:扁平和圆形。本文将探讨这两种网线的区别,并提供选…

用html写一个旋转菜单

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>旋转菜单</title><link relstylesheet href"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css"&…

百兆集成网络链接器911105A

百兆集成网络链接器&#xff08;有时也称为百兆网卡&#xff09;是一种硬件设备&#xff0c;主要用于计算机与计算机网络之间的高速数据传输。它的主要功能包括&#xff1a; 1. 高速数据传输&#xff1a;百兆集成网络链接器支持100Mbps的数据传输速率&#xff0c;比之前的以太…

河道采砂执法监管信息化平台:科技赋能,智慧监管

随着信息技术的飞速发展&#xff0c;信息化平台已经成为提升行业监管效率和水平的重要工具。河道采砂作为水利资源管理的重要环节&#xff0c;其执法监管同样需要与时俱进&#xff0c;利用先进技术手段提升监管效能。河道采砂执法监管信息化平台便是这一背景下的产物&#xff0…

某酒业集团数字化转型规划(169页附下载)

某酒业集团数字化转型项目实施方案建议书(P169).rar是一个极具参考价值的资料&#xff0c;它详细地阐述了如何利用数字化技术来推动企业转型。这份建议书以IBM的先进技术和某酒业集团的实际应用需求为基础&#xff0c;提出了一套全面、系统的数字化转型解决方案。该方案首先对某…

在linux系统打开pycharm,为pycharm在桌面设置图标

1.打开终端输入&#xff1a;gedit /usr/share/applications/Pycharm.desktop 然后会弹出一个文件 2.在文件中写入&#xff1a; [Desktop Entry] TypeApplication NamePycharm GenericNamePycharm3 CommentPycharm3:The Python IDE Execsh /home/.../pycharm.sh #自己pych…

【kettle002】kettle访问人大金仓KingbaseES数据库并处理数据至execl文件

一直以来想写下基于kettle的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 熟悉、梳理、总结下人大金仓KingbaseES数据库相关知识体系 kettle访问人大金仓KingbaseES数据库…

Centos之yum安装好玩的命令

1.会动的小火车 我在root下使用的 yum install sl.x86_64sl2.figlet yum install figlet.x86_64figlet 55553.cowsay会说话 yum install cowsay

javaScript基础3

javaScript 一.对象1.概念2.创建对象的三种方法(1).字面量创建&#xff08;利用{}&#xff09;(2)变量、属性、函数、方法的区别(3).new Object创建(4).构造函数 3.new关键字的执行过程4.遍历对象&#xff08;for..in) 二.内置对象1.了解2.math对象3.日期对象&#xff08;构造函…

【声呐仿真】学习记录0.5-配置ssh远程连接docker、在docker中使用nvidia显卡

【声呐仿真】学习记录0.5-配置ssh远程连接docker、在docker中使用nvidia显卡 配置ssh远程连接docker1.端口映射2.配置ssh 在docker中使用nvidia显卡配置CUDA 注意&#xff1a;之前已经创建过容器的&#xff0c;需要打包成镜像&#xff0c;重新创建容器&#xff0c;因为要在创建…

伐木机不要石头!!!

伐木机不要石头&#xff01;&#xff01;&#xff01;(easy version) 本题有对应的hard version&#xff0c;区别仅在多次询问中。保证easy version的测试用例集是hard version的真子集&#xff0c;通过困难版本的代码经过简单修改可直接通过简单版 看着家里贫瘠的资源&#x…