qt应用层程序打包发布(win+linux)

windows下发布

这个比较简单,拷贝可执行程序在新的文件夹中:例如MyApp
进入之后执行如下:

windeployqt xxx.exe

然后就会生成打包文件(主要是qt依赖)
如果是需要一些自己编写的库文件,这时候就要手动拷贝到xxx.exe同一级目录下即ok

linux下发布

这个会复杂一点,这里不自带deployqt,所以需要安装
linuxdeployqt

在这里插入图片描述
然后重新命名为linuxdeployqt,随便你自己改。

给它加权限,注意是在同一级目录中

sudo chmod +x linuxdeployqt

然后复制到系统的bin目录下

sudo mv linuxdeployqt /usr/local/bin

运行

linuxdeployqt --version

会出现就ok
在这里插入图片描述

打包程序

当QT编译成功后,会出现自己的可执行文件
同样将可执行文件放入新的文件夹中例如:myapp

进入执行

linuxdeployqt app -appimage

一般就ok可以用了

ldd的链接问题

如果是自己写的库,可能会出现找不到自己的库的问题

解决方案
将库找出来放入文件夹xxx
执行

export LD_LIBRARY_PATH=/home/path/xxx:$LD_LIBRARY_PATH

然后执行
linuxdeployqt app -appimage

体会

此类ldd问题,其实有很多解决方案
比如写入.bashrc文件export LD_LIBRARY_PATH=/home/path/xxx:$LD_LIBRARY_PATH,然后source ~/.bashrc
在比如下面也ok

cd /etc/ld.so.conf.d
sudo touch mylib,conf
sudo gedit mylib,conf
写入自定义库的路径
sudo ldconfig

-------------------------------------------------------更新一些小脚本------------------------------------------------------------------

1.自动拷贝自定义的库文件到制定的文件夹
使用方法:在build文件夹下(一般都是这个),执行下面脚本文件
#!/bin/bash

# 定义源目录和目标目录
SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
DEST_DIR="lib_sub"

# 检查目标目录是否存在,如果不存在则创建
if [ ! -d "$DEST_DIR" ]; then
    mkdir "$DEST_DIR"
fi

cd $DEST_DIR
rm -r *
cd ..

# 函数用于复制文件和链接,保持链接结构
copy_files_and_links() {
    local pattern=$1
    local source_file
    local dest_file
    local link_target

    # 复制文件
    find "$SOURCE_DIR" -type f -name "$pattern" -exec cp -P {} "$DEST_DIR" \;

    # 复制链接文件
    find "$SOURCE_DIR" -type l -name "$pattern" | while read -r link; do
        source_file=$(readlink -f "$link") # 获取链接指向的文件绝对路径
        dest_file="$DEST_DIR/$(basename "$link")" # 计算目标路径
        link_target=$(readlink "$link") # 获取链接的目标路径

        # 如果链接指向的文件存在,则复制链接指向的文件
        if [ -e "$source_file" ]; then
            cp -P "$source_file" "$DEST_DIR"
        fi

        # 创建链接文件
        ln -sf "$link_target" "$dest_file"
    done
}

# 调用函数以复制各种模式的共享库文件和链接
copy_files_and_links "*.so"
copy_files_and_links "*.so.1"
copy_files_and_links "*.so.1.0"
copy_files_and_links "*.so.1.0.0"
# 结束脚本
echo "Shared library files have been copied to $DEST_DIR"
2.创建app,打包为tar,gz
#!/bin/bash

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"

export LD_LIBRARY_PATH=$SCRIPT_DIR/lib_sub:$LD_LIBRARY_PATH 


linuxdeployqt xxx -appimage


echo "---------------------creat done!-------------------------"


tar -czvf myapp.tar.gz *


# 解压
# tar -xzvf myapp.tar.gz -C /path/to/directory

# 例如
# tar -xzvf myapp.tar.gz -C ~/www/


echo "---------------------create    myapp.tar.gz       done-------------------------"
3.运行脚本
#!/bin/bash

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"

export LD_LIBRARY_PATH=$SCRIPT_DIR/lib_sub:$LD_LIBRARY_PATH 
export LD_LIBRARY_PATH=$SCRIPT_DIR/lib:$LD_LIBRARY_PATH

./AppRun

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值