linux下QT发布程序双击打不开解决方法

现象

Qt开发的程序,使用./终端可以打开,双击却打不开。

阶段一

右键可执行程序,选择属性,可执行程序类型如果是“application/x-sharedlib”,在QT的pro文件添加如下内容,清除后重新编译release版;

QMAKE_LFLAGS += -no-pie

此时的可执行程序是“x-executable”,双击看能否启动。

阶段二

经过阶段一如果还是打不开,此时可以写个小demo,新建一个带界面的工程,什么都不做,编译后看是否能双击打开,如果能打开,但复杂一点的工程打不开,说明是环境问题;
原因分析
双击在图形界面,环境是文件管理器,使用./是在命令行界面,也就是shell脚本,shell启动时会执行一些脚本,改变环境变量;复杂工程如果依赖三方库,直接双击可执行是打不开的。
解决方法
修改全局环境变量,把可执行程序当前路径加到如下配置文件(依赖库一般和可执行程序在同级目录):

/etc/ld.so.conf

执行下面指令,使设置立即生效:

sudo ldconfig

再双击可执行程序,正常可以打开。

阶段三

项目工程太大再加上电脑上有其他软件修改环境变量,经历这些操作可能还是不能双击打开,下面介绍通过shell脚本双击启动,在用户看来形式上一样。
1、编辑一个shell脚本,例如是runHWT.sh,放在可执行文件目录,内容如下:

#!/bin/bash
#workdir当前工作路径
workdir=$(cd $(dirname $0); pwd)	
#echo $workdir
export LD_LIBRARY_PATH=$workdir	#添加临时环境变量
cd $workdir
./HardWareTest		#HardWareTest是可执行文件名

此时可以在终端./runHWT.sh运行程序了,但双击还是打不开。

2、设置shell脚本双击可打开
打开文件管理器-编辑-首选项-行为,勾选“打开可执行文本文件时运行它们”;
右键runHWT.sh,选择权限选项卡,勾选允许作为程序执行文件,此时双击“runHWT.sh”可直接执行程序;

3、创建桌面快捷方式
为了看上去更像一个程序,创建一个带图标的桌面快捷方式;
在桌面创建文件/home/chw/Desktop/runHWT.sh.desktop,编辑vim runHWT.sh.desktop:

[Desktop Entry]
Encoding=UTF-8
Name=runHWT
Comment=硬件测试程序
Exec=/home/chw/HSCompany/HardWareTest/HWTrelease-20210119/runHWT.sh
Icon=/home/chw/HSCompany/HardWareTest/HWTrelease-20210119/image/HWTlogo.png
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;

其中Exec是shell脚本完整路径,Icon是软件图标路径,png格式,保存退出,可以在桌面看到一个名字是“runHWT”的图标,此时双击该快捷方式图标即可启动软件。

猜你喜欢

转载自blog.csdn.net/weixin_40355471/article/details/112241927