QT Linux pack


QT ldd 方法 打包跨 Linux 无QT环境应用

1. 新建一个文件夹 准备 ldd 输出脚本和应用运行脚本


# ldd.sh  ldd 输出脚本

#! /bin/bash
LibDir=$PWD"/lib"
Target=$1
lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))
$(mkdir $LibDir)
for Variable in ${lib_array[@]}
do
    cp "$Variable" $LibDir
done


# xxx.sh 应用运行脚本   !!!!!!!! 脚本名字与 QT release 生成的应用名字一致

#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"

2. 给两个脚本添加可执行权限

sudo chmod 777 ldd.sh
sudo chmod 777 xxx.sh   //  !!!!!!!! 脚本名字与 QT release 生成的应用名字一致

3. 新建一个存放打包应用的文件夹


4. 将 ldd.sh 复制到 QT 编译的 release 目录

# 执行
./ldd.sh xxx

之后将 lib 文件复制到第三步创建的文件夹中

5. 将 ldd.sh 复制到 QT 安装目录的 platforms 文件夹中

# 执行
./ldd.sh libqxcb.so

之后将 lib 文件复制到第三步创建的文件夹中

6. 将 platforms 整个文件夹复制到第三步创建的文件夹中


7. 将 xxx.sh 复制到第三步创建的文件夹中,运行脚本


8. 如果跨 linux 段错误,删除公有库,如果不知道哪些是,可将除QT外的库拷贝到另一个文件夹中,运行程序,差什么加什么。


文章作者: bySouffle
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 bySouffle !
 上一篇
ethercat-1.5.2-patch.tar.gz 打过补丁的ethercat包 linux-4.19.152.tar.gz 普通的linux源代码 linux-4.19.152-patch.tar.gz
2021-02-09 bySouffle
下一篇 
  目录