一:总体思路
- 把QT写的程序整理好,生成release版本。
- 利用下面的copylib.sh脚本文件,拷贝release版本的依赖库。
- 把/usr/lib/arm-linux-gnueabihf/qt5/plugins/platforms拷贝到release所在文件夹(建议单独拿出来release版本的程序)
- 找出platforms中libqxcb.so的依赖库
- 把2,4产生的依赖库放在一起,然后放release版本软件,然后放platforms文件夹。
- 把第二个脚本文件powerCut.sh改成自己软件的名字,例如:你的release软件名叫:hello,那么就把这个脚本名字改为hello.sh
- 然后执行一次第二个脚本。
- 开始移植,若无权限,记着用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}" != "/" ]
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"
四:注意事项
- 使用静态库的程序,编译过release版本的程序之后是不需要把静态库带着的。
- 利用qtLinguist做的多语言,要把*.qm文件带着。
- 图片资源文件是不需要带着的。