设置Linux开发板开机自启动QT程序报错解决办法
设置开发板开机自启动QT
打开 /etc/init.d/rsC 文件,添加以下内容
c
cd /
./my_start_run.sh
my_start_run.sh 是自己编写的自启动脚本,内容例如下:(也可以将这些直接写到 /etc/init.d/rsC 文件最后)
PS:下面这个脚本是最终的脚本,文章所展示的是我解决问题的调试过程,最后发现只需要加一句 source /etc/profile 即可
c
# 自启动程序
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的时候我们设置了一些链接库的路径,终端里运行
c
echo $LD_LIBRARY_PATH

将这些路径复制下来,添加到 LD_LIBRARY_PATH 环境变量中,添加内容后的启动脚本如下所示
c
#!/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 ""

.png&pos_id=img-QXpoSxcP-1713850274268)
- 解决报错:设置Qt 应用程序查找插件的路径
终端运行如下命令
c
echo $QT_PLUGIN_PATH

将这些路径复制下来,添加到 QT_PLUGIN_PATH 环境变量中,添加内容后的启动脚本如下所示
c
#!/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 环境变量的值
c
echo $XDG_RUNTIME_DIR

在系统中寻找 fonts 文件
c
find / -name "fonts"

将这些路径复制下来,修改启动脚本如下所示
c
#!/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程序,&表示在后台运行
- 最终终于实现了开机自启动
