Linux下打包发布Qt开发的程序软件(JetsonNano开发板)

一、简介

1.任务目标

使用Qt开发完成后,手动完成程序的打包发布

2.环境简介

系统:Ubuntu(Linux)
开发板:Jetson Nano
Qt版本:5.7

二、打包过程

1.准备工作

1.使用Qt将需要打包的软件进行Release下的编译,会产生一个Release版本的文件夹,打开文件夹会发现有可执行程序,在此用AppName代替;

2.在喜欢的地方(我选择桌面)建一个文件夹,命名为AppName(文件夹名字和运行程序的名称一致);

3.将Release文件夹的可执行文件AppName拷贝到刚才创建的AppName文件夹中;

4.在AppName文件夹里新建两个脚本,分别命名为AppName.sh和pack.sh。AppName.sh是运行程序的脚本,pack.sh是打包运行程序时所需要用的库的脚本

2.编辑脚本

1.打开AppName.sh脚本,输入一下内容,照搬即可,无需任何改动

```appname=`basename $0 | sed s,\.sh$,,`
```dirname=`dirname $0`
```tmp="${dirname#?}"
```if [ "${dirname%$tmp}" != "/"]; then
    ```dirname=$PWD/$dirname
```fi
```LD_LIBRARY_PATH=$dirname
```export LD_LIBRARY_PATH
```$dirname/$appname "$@"

2.打开pack.sh脚本,输入以下内容

```exe="AppName"//这里填写你的可执行程序的名称
```des="/home/pyukil/Desktop/AppName"//这里的路径是你文件夹AppName的路径
```deplist=$(ldd $exe | awk '{if (match($3,"/")){printf("%s "),$3} }')
```cp $deplist $des

3.运行脚本,启动程序

1.首先运行pack.sh,会自动将运行程序所需要的lib库文件复制到当前文件夹下

2.将图标文件复制到AppName文件夹下

3.运行AppName.sh,即可启动程序

三、打包过程以及运行时出现的问题

1.在运行pack.sh脚本时,报错缺少linuxjetson-xxx.so

解决办法:执行脚本时,如果报错缺少某个库文件,全局搜索该库文件,手动复制该文件到AppName文件夹下,再继续执行pack.sh即可

2.程序打包完成,与Qt编译时运行效果不一样

具体问题:我自己的程序时一个人脸识别的软件,使用了摄像头,编译时程序运行有摄像头捕捉的画面,而打包之后,没有摄像头的画面,其他debug信息正常

解决方案:该问题是运行时没有以管理员方式运行,再Qt编译时,我使用的时sudo打开的Qt,所以编译时也默认时管理员方式运行程序。在脚本运行程序时,使用名令sudo ./AppName.sh,运行效果就能和Qt编译时一样

后续发现问题会继续更新。。。。。

你可能感兴趣的:(Linux下打包发布Qt开发的程序软件(JetsonNano开发板))