OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8720|回复: 15

如何设置IMX6ULL 自启动QT程序?

[复制链接]

11

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2018-3-26
在线时间
107 小时
发表于 2021-8-4 16:31:14 | 显示全部楼层 |阅读模式
1金钱
跟着教程PDF,已经移植了TSlib,以及QT5.12.9到阿尔法开发板。测试触摸,以及QT demo程序都是正常的。

但是,怎么将自己写的QT,或者QT自带的demo程序,设置为开发板上电后自启动。默认上电启动。

原来出厂的系统,上电之后,先运行正点原子图片,然后会加载正点原子综合QTdemo。

现在跟着移植qt5.12.9到开发板文档,移植了所有所需环境,更改了文件系统。开发板上电后,运行正点原子加载图片,这时怎么再默认运行自己写的QT程序?

最佳答案

查看完整内容[请看2#楼]

在自启动脚本里写上一句代码,就是写你的QT程序所在的路径的绝对地址,就是写文件的绝对地址。自启动文件有很多,比如/etc/init.d/rcS、/etc/network/interfaces这些自启动文件的某一个文件里都可以写。比如我的QT程序文件文字是QDesktop,在文件系统的/home/root下,那么这个文件的绝对路径就是/home/root/QDesktop,所以可以直接在上面的/etc/network/interfaces自启动脚本里添加上这个句代码: 如果你的是出厂的文件系统,因 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2018-3-26
在线时间
107 小时
 楼主| 发表于 2021-8-5 14:56:50 | 显示全部楼层
本帖最后由 莫西莫西 于 2021-8-5 15:01 编辑

自己回复自己。目前感觉已经解决了。
问题分析:阿尔法开发板已经移植了QT环境,提示err 缺少的libQT5widget.so文件,在开发板的QT安装路径可以查到。说明不是缺少库这个问题。
QT程序的是放在 /etc/init.d/rcS的脚本中。它可能是在环境设置脚本profile之前执行的,那么有可能是QT环境还没设置好,就已经执行了QT程序,所以
才会提示缺少库文件。顺着这个思路,我想在最后一个执行脚本中放QT程序,(可是目前初学的我不会查看哪个脚本先执行,哪个脚本最后执行)。我通过  ls命令查看
/etc下的文件,发现 init.d排在profile之前,那么是不是linux执行脚本是按照箭头方向,从左到右依次执行。如图1。那么我仿照脚本文件,新建一个脚本文件 vi makeqt
里面内容是:
#!/bin/sh
/QT/test &

新建的是排在脚本最后,按照时间创建顺序排列执行(我当时是这么认为的)。但是结果好像不是那么回事。并没有按照我的makeqt脚本最后执行。新建完之后,通过ls发现他们顺序
都变了,新建的脚本makeqt并没有按照想象中那样排在profile之后,如图2。这个时候,猜想可能不是按照脚本创建时间的顺序去执行脚本,但是已经新建了,执行试试看,果然不行。
linux中 脚本执行的先后顺序怎么查看 或者怎么设置,有会的可以分享一下

解决方法:
最后不行,就把QT执行路径放在profile的环境变量之后,这样即使profile不是最后执行的脚本,那把QT执行程序放在 QT环境变量设置之后总该可以吧。
按照这个思路,去试了一下。bingo,可行。如图3.

但是我遇到几个问题,就是文件系统是根据【正点原子】 I.MX6U 移植  Qt5 5. . 12.9 V1.1  配置的。因为需要空的文件系统移植QT源码以及TSLIB
。烧录新文件系统之后,屏幕,以及串口显示  
Please press Enter to activate this console.
按下enter之后,才会进入控制台,才会执行qt程序。这个怎么解决?


以及
/ # [    9.304977] random: test urandom read with 36 bits of entropy available
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'

这个怎么解决,环境变量是按照原子的配置的


图1

图1

图2

图2

图3

图3
回复

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2021-8-4 16:31:15 | 显示全部楼层
本帖最后由 仰望星空之云 于 2021-8-5 09:26 编辑

在自启动脚本里写上一句代码,就是写你的QT程序所在的路径的绝对地址,就是写文件的绝对地址。自启动文件有很多,比如/etc/init.d/rcS、/etc/network/interfaces这些自启动文件的某一个文件里都可以写。比如我的QT程序文件文字是QDesktop,在文件系统的/home/root下,那么这个文件的绝对路径就是/home/root/QDesktop,所以可以直接在上面的/etc/network/interfaces自启动脚本里添加上这个句代码:
  1. /home/root/QDesktop
复制代码

如果你的是出厂的文件系统,因为出厂的文件系统有/etc/rc.local这个自启动文件,这个自启动文件是系统运行起来以后几乎是最后一个才运行的脚本,那么可以写在这个文件里,比如在/etc/rc.local里写上这句话:
  1. /home/root/QDesktop
复制代码
要注意的是,如果你的是出厂的文件系统,要实现开机自动运行你的QT程序的话,先将出厂系统的QT程序给关掉,关掉的方法在《【正点原子】I.MX6U用户快速体验V1.8》后面有写。
当然,如果你懂得自己编写自启动脚本,可以自己写一个脚本来实现开机自启动。




回复

使用道具 举报

0

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2552
金钱
2552
注册时间
2019-12-5
在线时间
352 小时
发表于 2021-8-4 17:32:54 | 显示全部楼层
  1.将编译好的Qt应用程序window放到/opt/路径下  2.在/etc/init.d/rcS文件末尾加入/opt/window -qws&
回复

使用道具 举报

11

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2018-3-26
在线时间
107 小时
 楼主| 发表于 2021-8-5 12:03:42 | 显示全部楼层
仰望星空之云 发表于 2021-8-4 16:31
在自启动脚本里写上一句代码,就是写你的QT程序所在的路径的绝对地址,就是写文件的绝对地址。自启动文件有 ...

我试了 汇报其他的错误:

Please press Enter to activate this console. /QT/SecDarmQt: error while loading shared libraries: libQt5Widgets.so.5: cannot open shared object file: No such file or directory
我是在  /etc/init.d/rcS中添加的文件  /QT/SecDarmQt &

自启动会报错,不运行。但是在/QT目录。执行./SecDarmQt 。可以在开发板上运行。(但是好像会报:QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root')
1234.jpg
回复

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2021-8-5 12:53:09 | 显示全部楼层
莫西莫西 发表于 2021-8-5 12:03
我试了 汇报其他的错误:

Please press Enter to activate this console. /QT/SecDarmQt: error while ...

前提你的系统要有qt库啊,qt程序需要qt库的支持,自己去编译移植qt库。
想思考的时候,有时还可以用屁股,QQ 1252699831
回复

使用道具 举报

11

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2018-3-26
在线时间
107 小时
 楼主| 发表于 2021-8-5 13:03:18 | 显示全部楼层
茂茂2019 发表于 2021-8-5 12:53
前提你的系统要有qt库啊,qt程序需要qt库的支持,自己去编译移植qt库。

我移植了QT库,按照原子的PDF文档移植完了,以及TSlib库
回复

使用道具 举报

11

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2018-3-26
在线时间
107 小时
 楼主| 发表于 2021-8-5 13:04:49 | 显示全部楼层
茂茂2019 发表于 2021-8-5 12:53
前提你的系统要有qt库啊,qt程序需要qt库的支持,自己去编译移植qt库。

执行QT程序./QT/xxx  可以显示出来。这种情况,如果没有QT库,应该在开发板上不行显示
回复

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2021-8-5 13:08:19 | 显示全部楼层
环境变量设置没
想思考的时候,有时还可以用屁股,QQ 1252699831
回复

使用道具 举报

11

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2018-3-26
在线时间
107 小时
 楼主| 发表于 2021-8-5 13:14:44 | 显示全部楼层

环境变量,在/etc/profile中按照原子教程添加了

export QT_ROOT=/usr/lib/arm-qt
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
export QT_QPA_FONTDIR=/usr/share/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export LD_LIBRARY_PATH=$QT_ROOT/libQT_ROOT/plugins/platforms
export QML2_IMPORT_PATH=$QT_ROOT/qml
export QT_QPA_FB_TSLIB=1

开发板中的QT库

开发板中的QT库

环境变量

环境变量
回复

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2021-8-5 15:34:49 | 显示全部楼层
你是nfs挂载 的?
想思考的时候,有时还可以用屁股,QQ 1252699831
回复

使用道具 举报

11

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2018-3-26
在线时间
107 小时
 楼主| 发表于 2021-8-5 15:48:02 | 显示全部楼层

将编译过的QT源码,TSLIB解压到开发板的
回复

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2021-8-5 16:39:21 | 显示全部楼层
看看你的路径 是否对了,对照环境变量的路径,可能是你打包什么的,搞错路径 了
想思考的时候,有时还可以用屁股,QQ 1252699831
回复

使用道具 举报

1

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2015-12-11
在线时间
78 小时
发表于 2021-10-13 11:39:38 | 显示全部楼层
好贴,mark标记。用时再看
回复

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2020-11-25
在线时间
20 小时
发表于 2021-10-15 15:53:09 | 显示全部楼层
/etc/init.d里面新建一个S90User,在S90User里面export各种Qt库,Tslib库,环境变量,还可以顺便做点其他事情,最后 nohup 你自己的Qt程序
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2020-9-8
在线时间
3 小时
发表于 2023-8-10 16:24:21 | 显示全部楼层
莫西莫西 发表于 2021-8-5 14:56
自己回复自己。目前感觉已经解决了。
问题分析:阿尔法开发板已经移植了QT环境,提示err 缺少的libQT5widg ...

兄弟使用你的方法,我可以实现了,关闭那个console开始必须按enter可以修改initab中
打开 /etc/inittab 文件

将以下两行:

console::askfirst:-/bin/sh
tty1::askfirst:-/bin/sh
修改为:

console:nce:/bin/sh
tty1:nce:/bin/sh
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 01:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表