您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > qt程序在linux下发布
在Ubuntu上,通过运行lddmyapp可以查看应用程序依赖的动态链接库,在=后显示”notfound”的动态链接库就是需要复制的动态链接库,如下图:将缺失的动态库复制到应用程序目录后,由于实际的动态库名称与应用程序所需的名称不一致,还需要通过建立软链接实现应用程序与动态链接库的链接,比如libQt5Core.so.5建立指向libQt5Core.so.5.1.0的软链接,在应用程序目录下执行下面的命令:ln-s$PWD/libQt5Core.so.5.1.0libQt5Core.so.5所有动态库的软链接建立之后,执行下面的命令使应用程序目录成为系统动态库路径:exportsetLD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH再次运行lddmyapp显示所有动态库都已经关联,运行myapp报错Failedtoloadplatformplugin“xcb”.Availableplatformsare:Aborted(coredumped)这是缺少平台信息,需要将安装目录/opt/Qt5.1.0/5.1.0/gcc/plugins/platforms文件夹复制到应用程序所在目录下,执行应用程序仍然报错Failedtoloadplatformplugin“xcb”.Availableplatformsare:linuxfbminimalxcbAborted(coredumped)这时通过命令exportQT_DEBUG_PLUGINS=1,再运行./myapp可以将QT的调试信息打印出来,可以看到实际上还缺少一个动态库,导致libqxcb.so不能加载:同样复制这个动态库到应用程序目录下,建立好软链接,就能执行应用程序了。下面是某个应用程序建立软链接的命令,以及相关的动态库名和链接名:ln-s$PWD/libQt5DBus.so.5.1.0libQt5DBus.so.5ln-s$PWD/libQt5Core.so.5.1.0libQt5Core.so.5ln-s$PWD/libQt5Gui.so.5.1.0libQt5Gui.so.5ln-s$PWD/libQt5Widgets.so.5.1.0libQt5Widgets.so.5ln-s$PWD/libQt5Xml.so.5.1.0libQt5Xml.so.5ln-s$PWD/libicudata.so.49.1.2libicudata.so.49ln-s$PWD/libicui18n.so.49.1.2libicui18n.so.49ln-s$PWD/libicuuc.so.49.1.2libicuuc.so.49为了避免每次运行前设置LD_LIBRARY_PATH环境变量,可以通过编写一个脚本来启动应用程序#!/bin/shappname=`basename$0|seds,\.sh$,,`dirname=`dirname$0`tmp=${dirname#?}if[${dirname%$tmp}!=/];thendirname=$PWD/$dirnamefiLD_LIBRARY_PATH=$dirnameexportLD_LIBRARY_PATH$dirname/$appname$@将这个脚本保存为myapp.sh,并且放在应用程序同一目录下,只要运行这个脚本就能执行应用程序了。
本文标题:qt程序在linux下发布
链接地址:https://www.777doc.com/doc-2854643 .html