#!/bin/sh
exe="RFIDReaderTest" #要打包的程序名 *
#获取当前路径
currentPath=$(cd `dirname $0`; pwd)
#打包的Qt库位置 *
packDes="$currentPath/../lib"
#程序依赖库所在位置,用于打包依赖库需要的Qt库,没有留空即可,即myLibPath="" *
myLibPath="$currentPath/myLib"
#删除原有文件夹,新建新文件夹,存储Qt库
rm -r $packDes
mkdir $packDes
#----------获取程序所依赖的‘Qt库’路径--------------
echo "------------正在获取程序所依赖的‘Qt库’--------------"
#输出程序所依赖的Qt库
ldd $exe | awk -F " " \
'
{
if ($3 ~ "/Qt")
{
printf("%s\n"),$3
}
}
'
#赋值路径,准备拷贝
copyPathList=$(ldd $exe | awk -F " " \
'
{
if ($3 ~ "/Qt")
{
printf("%s\n"),$3
}
}
')
#拷贝‘Qt库’文件到打包文件夹路径中
cp $copyPathList $packDes
echo "---正在打包libQt5XcbQpa.so.*.0和libQt5DBus.so.*.0库......"
#获取依赖库中第一个库完整的路径
libPath=$(echo $copyPathList | awk -F " " '{printf("%s\n"),$1}')
#获取Qt版本号
sonPath1=$(echo $libPath | awk -F "/lib" '{printf("%s\n"),$1}')
sonPath2=$(echo $sonPath1 | awk -F "/" '{printf("%s\n"),$NF}')
sonPath3=$(echo $sonPath1 | awk -F "/$sonPath2" '{printf("%s\n"),$1}')
QtVersion=$(echo $sonPath3 | awk -F "/" '{printf("%s\n"),$NF}')
echo "当前Qt版本号为:"$QtVersion
cd $currentPath
#打包Qt插件platforms文件夹
echo "---打包Qt插件platforms文件夹......"
#分解拼接插件platforms路径
platformsPath=$(echo $libPath | awk -F "/lib/" '{printf("%s\n"),$1}')"/plugins/platforms"
echo "---platformsPath路径:"$platformsPath
#将platforms文件拷贝到程序所在路径
cp -r $platformsPath $currentPath
#分解拼接指定库路径
Qt5XcbCopyPath=$(echo $libPath | awk -F "/lib/" '{printf("%s\n"),$1}')"/lib/libQt5XcbQpa.so.$QtVersion"
Qt5DBusCopyPath=$(echo $libPath | awk -F "/lib/" '{printf("%s\n"),$1}')"/lib/libQt5DBus.so.$QtVersion"
echo "Qt5XcbCopyPath:"$Qt5XcbCopyPath
echo "Qt5DBusCopyPath:"$Qt5DBusCopyPath
#拷贝libQt5XcbQpa.so.$QtVersion和libQt5DBus.so.$QtVersion库
cp $Qt5XcbCopyPath $packDes
cp $Qt5DBusCopyPath $packDes
#软链接
echo "------- 软链接正在打包libQt5XcbQpa.so.*和libQt5DBus.so.* --------"
cd $packDes
Qt5XcblnPath=$(echo libQt5XcbQpa.so.*.0)
Qt5DBuslnPath=$(echo libQt5DBus.so.*.0)
libName1=$(echo $QtVersion | awk -F "." '{printf("%s\n"),$1}')
libName2=$(echo $QtVersion | awk -F "." '{printf("%s\n"),$2}')
ln -s $Qt5XcblnPath $packDes/libQt5XcbQpa.so
ln -s $Qt5XcblnPath $packDes/libQt5XcbQpa.so.$libName1
ln -s $Qt5XcblnPath $packDes/libQt5XcbQpa.so.$libName1.$libName2
ln -s $Qt5DBuslnPath $packDes/libQt5DBus.so
ln -s $Qt5DBuslnPath $packDes/libQt5DBus.so.$libName1
ln -s $Qt5DBuslnPath $packDes/libQt5DBus.so.$libName1.$libName2
#打包自己的库所依赖的QT库
if [ ! -d "$myLibPath" ]; then
echo "$myLibPath no exist"
echo "-----------'$exe'所依赖的Qt库打包完成!-----------"
exit 1 #没有依赖自己写的库,直接结束
fi
echo "------------正在获取自己写的库所依赖的QT库--------------"
for filePath in $myLibPath/*.so
do
echo "myLib:"$filePath
#赋值路径,准备拷贝
copyPathList=$(ldd $filePath | awk -F " " \
'
{
if ($3 ~ "/Qt")
{
printf("%s\n"),$3
}
}
')
for file in $copyPathList
do
name=$(echo $file | awk -F "/lib/" '{ print $2}')
if [ ! -f "$packDes/$name" ];then
echo "copy file:"$file
#拷贝‘Qt库’文件到打包文件夹路径中
cp $file $packDes
fi
done
done
echo "-----------所依赖的Qt库全部打包完成!-----------"
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
linux qt程序打包脚本及流程.rar (3个子文件)
linux qt程序打包脚本及流程
ShiftHandover.sh 230B
ShiftHandover3.sh 4KB
release.sh 419B
共 3 条
- 1
资源评论
hymaliang1120
- 粉丝: 1
- 资源: 68
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功