QT客户端在 linux ubuntu, UOS 打包发布

                  QT客户端在 linux ubuntu, UOS 打包发布

1. 用QT Creator 完成编译,并且能运行。在主程序的.pro文件添加

    QMAKE_LFLAGS += -Wl,-rpath=./

    表示要加载当前目录的动态库,但实际测试,应该是没起作用,加上没坏作用。

2. 写了5个脚本,分别为install.sh, qt.conf, startup.sh, xxx.desktop, make_package.py, 打包时,直接运行 python make_package.py即可。

    脚本执行过程和原理:install.sh 和deploy 后的bin 目录的tar.gz压缩包,进行拼接,生成一个 .run文件,在执行 .run文件时候,在将.run文件分离成.sh和.tar.gz文件。

(1)install.sh 源码如下,最后要有一行空行,lines的值要比空行大1,即取出压缩包的内容:

#!/bin/bash
lines=12
tail -n +$lines "$0" > /tmp/xxx.tar.gz
tar -zxvf /tmp/xxx.tar.gz -C /tmp
sudo rm -rf /usr/local/xxxEXE
sudo mkdir /usr/local/xxxEXE
sudo rm -rf /usr/share/applications/xxx.desktop
sudo mv /tmp/xxx/* /usr/local/xxxEXE/
sudo cp /usr/local/xxxEXE/xxx.desktop /usr/share/applications/
exit 0

(2)qt.conf 源码如下,注意Prefix,否则会找不到动态库:

# Generated by linuxdeployqt
# https://github.com/probonopd/linuxdeployqt/
[Paths]
Prefix = ./
Plugins = plugins
Imports = qml
Qml2Imports = qml

(3)startup.sh源码如下,指定动态库路径,否则会找不到动态库:

#!/bin/bash
echo "start entry"
echo "current path: ${PWD}"
cd /usr/local/xxx/
echo "now path is: ${PWD}"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/xxxEXE:/usr/local/xxx/lib
./xxx

(4) desktop源码如下,创建启动图标

[Desktop Entry]
Encoding=UTF-8
Name=xxx
Exec=sh /usr/local/xxxEXE/startup.sh
Icon=/usr/local/xxxEXE/skin/images/logo.png
Terminal=false
Type=Application
StartupNotify=true

(5) make_package.py,控制整个打包流程

#coding=utf-8
import os

print("Create package for xxx.")

os.system("rm -rf xxx.run")
os.system("cp -r ../../bin/ ./xxx")
os.system("cd xxx; rm -rf *.dll *.a; cd -")
os.system("cp startup.sh ./xxx/")
os.system("cp xxx.desktop ./xxx/")
os.system("cd xxx; linuxdeployqt xxx -appimage -verbose=2")
os.system("cd xxx; rm -rf *.AppImage")
os.system("cp qt.conf ./xxx/")
os.system("tar -zcvf xxx.tar.gz ./xxx")

os.system("cat install.sh xxx.tar.gz > xxx.run")
os.system("rm -rf xxx xxx.tar.gz")
os.system("chmod 777 xxx.run")
print("Over.")

注意:在这个过程中,可能会报找不到某些库,一个一个安装即可,如,

1. 编译,安装 linuxqdeploy
2. 安装appimage
3. 安装缺省的动态库

sudo apt-get install postgresql
sudo apt-get install unixodbc
sudo apt-get install patchelf

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值