栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Windows下Qt程序向Linux(uos)兼容-打包deb

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Windows下Qt程序向Linux(uos)兼容-打包deb

功能点:使用linuxdeployqt 使用dkpg打包deb,自动替换版本号

注意:此代码并不能给各位开箱即用,需要根据实际修改部分使用

linuxdeployqt ${package_path}/${exe_name}  -unsupported-allow-new-glibc -verbose=1 -qmake=/home/xhp/Qt/5.15.2/gcc_64/bin/qmake, 我觉得这能有用

linuxdeployqt源代码:https://github.com/probonopd/linuxdeployqt

deb打包的软件包结构:

cat ./com.xx.xx/DEBIAN/control

Package: com.demo.test
Version: 1.6.0.3
Priority: optional
Architecture: amd64
Maintainer: xxx[xxx@xxx.xx]
Depends: libxcb-xinerama0
Build-Depends: debhelper (>= 11)
Standards-Version: 4.1.3
Homepage: http://www.xxx.com
Description: xxxx客户端

下面是一个完整的项目发布为deb的shell脚本:  

#!/bin/bash

version=""
addlibtype=""
package_root="./com.demo.test" #软件包路径
package_name="com.demo.test" #软件包名称

# echo "$@"
while getopts "av:h" opt; do
    case $opt in 
    a)
        addlibtype="all"
        echo "-a 重新打包全部库 by linuxdeployqt"
        ;;
    v)
        version=$OPTARG
        echo "-v 指定本次打包版本: ${version} index:$OPTIND"
        sed -i "2c Version: ${version}" ${package_root}/DEBIAN/control
        sed -i "4c "version": "${version}"," ${package_root}/opt/apps/${package_name}/info
        ;;
    :)
        echo "Option -$OPTARG requires an argument." 
        exit 1
        ;;
    h)
        echo "-a 重新打包全部库"
        echo "-v 指定本次打包版本"
        exit 1
        ;;
    ?) #当有不认识的选项的时候arg为?
        echo "Invalid option: -$OPTARG index:$OPTIND"
        exit 1
        ;;
    esac
done

if [ "$version" == "" ];then
    echo "未指定本次打包版本 -v"
    exit 1
fi
#add qt env
export PATH=/home/Qt/5.15.2/gcc_64/bin:$PATH
export LIB_PATH=/home/Qt/5.15.2/gcc_64/lib:$LIB_PATH
export PLUGIN_PATH=/home/Qt/5.15.2/gcc_64/plugins:$PLUGIN_PATH
export QML2_PATH=/home/Qt/5.15.2/gcc_64/qml:$QML2_PATH


exe_path="../64/Release/"
exe_name="jyclient"
exe_file_path=$exe_path$exe_name
common_path="../64/Common"
package_path="${package_root}/opt/apps/${package_name}/files/bin/"

if [ ! -f ${exe_file_path} ];then
    echo -e "ERROR: ${exe_file_path}不存在n"
    exit 2
fi

echo "拷贝exe文件 拷贝Common目录 [${exe_path} ===> ${package_path}]"
cp -f ${exe_file_path} ${package_path}
cp -rf ${common_path} ${package_path}../

if [ "$addlibtype" == "all" ];then
echo "${package_path}${exe_name} 开始运行 linuxdeployqt"
#另一种加载所需库方式 ldd
# output_path=$(cd "$(dirname "$0")";pwd)
# deplist=$(ldd ${exe_name} | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')  
# echo "depends libs: $deplist"
# echo "开始拷贝动态库到exe目录下"
# cp $deplist $output_path
linuxdeployqt ${package_path}/${exe_name}  -unsupported-allow-new-glibc -verbose=1 -qmake=/home/xhp/Qt/5.15.2/gcc_64/bin/qmake
else
echo "${package_path}${exe_name} 开始拷贝自建动态库"
cp $exe_path/*.so ${package_path}../lib/
fi

echo "成功"

echo "打包目录大小:"
du -hs ${package_root}

echo "开始dpkg..."
export_file_name="${package_name}-${version}"
dpkg -b ${package_name} ${export_file_name}.deb



 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/277564.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号