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


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

    设置开发板开机自启动QT

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

    cd /
    ./my_start_run.sh
    
    • 1
    • 2

    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程序,&表示在后台运行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    报错一:error while loading shared libraries: libQt5Widgets.so.5: cannot open shared object file: No such file or directory

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

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

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

    echo $LD_LIBRARY_PATH
    
    • 1

    在这里插入图片描述

    将这些路径复制下来,添加到 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程序,&表示在后台运行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

    报错二: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
    
    • 1

    在这里插入图片描述

    将这些路径复制下来,添加到 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程序,&表示在后台运行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

    报错三: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
    
    • 1

    在这里插入图片描述

    在系统中寻找 fonts 文件

    find / -name "fonts"
    
    • 1

    在这里插入图片描述

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

    #!/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程序,&表示在后台运行
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 最终终于实现了开机自启动

    在这里插入图片描述

  • 相关阅读:
    KeyedProcessFunction 在 Flink项目中的应用实战
    随处可见的红黑树详解
    Bluethooth
    K8S 部署 seata
    chatgpt赋能python:Python找零-让你的生活更轻松
    Nginx
    用层序遍历建一棵二叉树
    【魔方代码】1200行C语言代码实现“魔方”程序,学会它买魔方的钱都省了,拿走不谢~
    【2022年江西省研究生数学建模】冰壶运动 思路分析及代码实现
    【Kotlin精简】第2章 集合
  • 原文地址:https://blog.csdn.net/HuangChen666/article/details/138122172