淘先锋技术网

首页 1 2 3 4 5 6 7

1.Startup Applications

ubuntu有一个专门控制自定义程序开机自启动的软件,直接在搜索栏输入start就能看到这个app,全称是Startup Applications
或者直接在终端输入

gnome-session-properties

也能打开这个软件。
打开以后,可以看到这样的界面
在这里插入图片描述
点击Add,就可以添加我们要的指令了。
在这里插入图片描述
Name可以随便写,comment可以不写。最主要的是Command。可以点击Browse,直接去选中我们写好的sh脚本。然后再通过sh脚本启动我们的程序就可以了。
为什么这里不直接指定我们的可执行程序呢,因为直接指定他启动不了。

2.创建sh脚本

在指定之前,我们肯定需要创建一个用于启动我们程序的脚本,start.sh

脚本里面可以这么写

#!bin/bash
cd /home/ai/eye
./main

cd后面是需要进入的目录
./后面是可执行文件的名字,这个都需要根据自己的实际情况去改。
很简单吧

3.自启动中遇到的一些坑(非常重要)

3.1 程序无法启动

有些程序,手动执行的时候,可以正常的启动,但是一到开机自启动,程序根本起不来。
这种情况很有可能是系统里的so库,和你编译时候依赖的库版本不一样导致的。
比如我在编译的时候,系统的opencv是4.0的版本
然后我编译完把这个可执行程序放到了另外一个嵌入式里,那个的opencv版本是4.1,我通过控制台直接启动是可以的,但是自启动,程序死活就是起不来。这个时候,就需要把编译环境下的库替换到执行环境下。

3.2 opencv程序自启动后异常

opencv启动还需要依赖系统的gtk,所以如果启动太快,gtk没有初始化完毕,那opencv的运行就会出现问题,比如图片显示不正常,识别二维码功能失效等问题。
这个解决方法很简单,再自启动程序的时候,加一个延时就行,我测试的时候,延时2秒一般就可以了,不过不同的机器可能不一样,具体情况具体修改

#!bin/bash
cd /home/ai/eye
sleep 2
./main