Qt 程序在linux下的发布

Ubuntu上,通过运行lddmyapp可以查看应用程序依赖的动态链接库,在=>后显示notfound”的动态链接库就是需要复制的动态链接库,例如:

libQt5Widgets.so.5=>not found

将缺失的动态库复制到应用程序目录后,由于实际的动态库名称与应用程序所需的名称不一致,还需要通过建立软链接实现应用程序与动态链接库的链接,比如libQt5Core.so.5建立指向libQt5Core.so.5.1.0的软链接,在应用程序目录下执行下面的命令:

ln-s $PWD/libQt5Core.so.5.1.0 libQt5Core.so.5

所有动态库的软链接建立之后,执行下面的命令使应用程序目录成为系统动态库路径:

exportset LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH

再次运行ldd myapp显示所有动态库都已经关联,运行myapp报错

Failedto load platform plugin “xcb”. Available platforms are:

Aborted(coredumped)

这是缺少平台信息,需要将安装目录/opt/Qt5.1.0/5.1.0/gcc/plugins/platforms文件夹复制到应用程序所在目录下,执行应用程序仍然报错

Failedto load platform plugin “xcb”.Available platforms are:

linuxfb

minimal

xcb

Aborted(core dumped)

这时通过命令exportQT_DEBUG_PLUGINS=1,再运行./myapp可以将QT的调试信息打印出来,可以看到实际上还缺少一个动态库,导致libqxcb.so不能加载:



同样复制这个动态库到应用程序目录下,建立好软链接,就能执行应用程序了。

下面是某个应用程序建立软链接的命令,以及相关的动态库名链接名

ln-s $PWD/libQt5DBus.so.5.1.0libQt5DBus.so.5

ln-s $PWD/libQt5Core.so.5.1.0libQt5Core.so.5

ln-s $PWD/libQt5Gui.so.5.1.0 libQt5Gui.so.5

ln-s $PWD/libQt5Widgets.so.5.1.0libQt5Widgets.so.5

ln-s $PWD/libQt5Xml.so.5.1.0 libQt5Xml.so.5

ln-s $PWD/libicudata.so.49.1.2libicudata.so.49

ln-s $PWD/libicui18n.so.49.1.2libicui18n.so.49

ln-s $PWD/libicuuc.so.49.1.2 libicuuc.so.49

为了避免每次运行前设置LD_LIBRARY_PATH环境变量,可以通过编写一个脚本来启动应用程序

#!/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 "$@"

将这个脚本保存为myapp.sh,并且放在应用程序同一目录下,只要运行这个脚本就能执行应用程序了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值