Linux打包免安装的Qt程序(编写导出依赖包的脚本
copylib.sh,程序启动脚本My。。。
本⽂介绍如何打包Qt程序,使其在没有安装Qt的系统可以运⾏。
默认前提:另外⼀个系统和本系统是同⼀个系统版本。
1,编写导出依赖包的脚本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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
更改可执⾏权限
chmod u+x copylib.sh
1
2
2,打开终端并进⼊到存放程序的(假设叫MyRelease)⽂件夹,运⾏下⾯命令(假设程序叫MyApp)
.
/copylib.sh MyApp
1
2
在此⽬录下会⾃动⽣成lib⽂件夹,脚本实际上是调⽤了 ldd MyApp指令获得MyApp运⾏时需要哪些库,并将库都复制放到当前⽬录的lib⽂件夹中。
3、把lib⾥的所有⽂件剪切到 MyRelease⽬录下,并删除此lib⽂件夹。
4、进⼊QT的安装⽬录,到platforms⽂件夹,本⽂路径是
/opt/Qt5.3.1/5.3/gcc_64/plugins/platforms/
1
2
将整个platforms⽂件夹复制到MyRelease⽂件夹中,注意:这时复制的是整个⽂件夹,这使得MyRelease⽂件夹中会多出⼀个platforms⽂件夹。
5、将上⽂的copylib.sh放到MyRelease/platforms/中,并运⾏
./copylib.sh libqxcb.so
1
2
这时在当前⽬录会得到新的lib⽂件夹。
将lib⾥的所有⽂件剪切到 MyRelease⽬录下,并删除此lib⽂件夹
6、在MyRelease⽂件夹中新建程序启动脚本MyApp.sh(脚本名称和App名称相同)#!/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 "$@"
1
2
3
4
5
6
7
8
9
10
11
12
13
更改可执⾏权限
chmod u+x MyApp.sh
1
2
7、测试程序
修改Qt的安装路径名称,如 /opt/Qt5.3.1/5.3 修改为 /opt/Qt5.3.1/5.311,
修改后,运⾏程序时就不能到安装⽬录⾥的库⽂件了。
sudo mv /opt/Qt5.3.1/5.3/ /opt/Qt5.3.1/5.311
1
2
这样就可在本机上做测试了。
在MyRelease⽂件夹下运⾏
./MyApp.sh
1
2
可能会报错:
This application failed to start because it could not find or load the Qt platform plugin "xcb". Available platform plugins are: xcb.
Reinstalling the application may fix this problem.
1
2
3
4
5
6
解决办法:
如果你修改了Qt安装路径名称,现在先修改回来,如:
sudo mv /opt/Qt5.3.1/5.311 /opt/Qt5.3.1/5.3
1
2
在MyRelease⽂件夹发现存在了⼀个libQt5DBus.so.5库⽂件,但他只是⼀个符号链接,需要把它补全。
[user@localhost]$ locate libQt5DBus
/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.la
/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.prl
/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so
/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5
/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5.3
/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5.3.1
...
1
2
3
4
5
6
7
8
9
把这两个库⽂件
/
opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5.3
/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5.3.1
1
2
3
拷贝到MyRelease⽂件夹下,然后再次运⾏启动脚本。
先修改路径(⽤以本地测试)
sudo mv /opt/Qt5.3.1/5.3/ /opt/Qt5.3.1/5.311
1
2
运⾏启动脚本
.
/MyApp.sh
linux系统安装步骤csdn
1
2
OK,程序启动成功。
现在可以把MyRelease打包成压缩包,拷贝到其他系统上去运⾏了。
友情提⽰,测试完毕,如果修改了Qt安装路径,不要忘记再修改回来。
版权声明:本⽂为博主原创⽂章,未经博主允许不得转载。 blog.csdn/zbc415766331/article/details/78108466

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。