linux下打包QT程序

一:总体思路

  1. 把QT写的程序整理好,生成release版本。
  2. 利用下面的copylib.sh脚本文件,拷贝release版本的依赖库。
  3. 把/usr/lib/arm-linux-gnueabihf/qt5/plugins/platforms拷贝到release所在文件夹(建议单独拿出来release版本的程序)
  4. 找出platforms中libqxcb.so的依赖库
  5. 把2,4产生的依赖库放在一起,然后放release版本软件,然后放platforms文件夹。
  6. 把第二个脚本文件powerCut.sh改成自己软件的名字,例如:你的release软件名叫:hello,那么就把这个脚本名字改为hello.sh
  7. 然后执行一次第二个脚本。
  8. 开始移植,若无权限,记着用chmod a+x *来改变权限,并且运行的是第二个脚本,而不是release版本的软件名。

二:copylib.sh

#!/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

三:PowerCut.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 "$@"

四:注意事项

  1. 使用静态库的程序,编译过release版本的程序之后是不需要把静态库带着的。
  2. 利用qtLinguist做的多语言,要把*.qm文件带着。
  3. 图片资源文件是不需要带着的。

猜你喜欢

转载自blog.csdn.net/qq_37468954/article/details/77574129