首页 > 编程语言 >QT5程序部署提示缺少Qt5系统库问题的解决方法 symbol lookup error /libQt5XcbQpa.so.5: undefined symbol:xxx

QT5程序部署提示缺少Qt5系统库问题的解决方法 symbol lookup error /libQt5XcbQpa.so.5: undefined symbol:xxx

时间:2024-09-25 17:04:25浏览次数:1  
标签:QT5 undefined lib symbol 路径 程序 platform QT

https://blog.csdn.net/qq_29852231/article/details/128853681

 

QT5程序部署提示缺少Qt5系统库问题的解决方法
问题:在用QT5.12开发程序后,部署至现场(Ubuntu18/20)发现提示缺少QT5的平台库(platform)或者系统提供的QT5平台库无法正常支撑程序运行
解析:经过研究发现,即时将Platform文件夹拷贝至程序同级目录,仍无法正常运行,通过对platform内的动态库的依赖检查发现可能是因为二级依赖查找到的库不全或版本不对导致。

解决方法
最简单的解决方法就是在部署环境中直接安装相应版本QT,但是作为商业产品,这种行为不可取,花费了大量时间,也撞了两次运气,终于找到了解决方法,如下。

首先需要将网上常说的,到指定路径寻找依赖的配置提前,越靠前越好:

QMAKE_LFLAGS += "-Wl,-Bsymbolic,-rpath,\'\$$ORIGIN\'"
QMAKE_LFLAGS += "-Wl,-Bsymbolic,-rpath,\'\$$ORIGIN/lib\'"
QMAKE_LFLAGS += "-Wl,-Bsymbolic,-rpath,\'\$$ORIGIN/../lib\'"
1
2
3
只有足够靠前,在编译链接时,程序第一寻找的第一链依赖的动态库路径才不是系统路径而是指定路径。
经试验,这段语句如果放在后面,程序第一寻找的QT平台库会去系统中找而非指定路径,这个应该与makefile的编译顺序有关。
通过脚本抓取程序第一链依赖的路径
脚本内容如下:

#bash ***.sh
#! bin/base
LibDir=$PWD/lib
mkdir $LibDir

Target=$1

lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))

for Variable in ${lib_array[@]}
do
cp "$Variable" $LibDir
done
1
2
3
4
5
6
7
8
9
10
11
12
13
执行脚本语句为

sudo jiaoben.sh chengxu
1
脚本会将抓出的第一链依赖放入程序同级的lib文件夹中,再将QT安装路径下的5.12/gcc/plugins/platform文件夹拷贝至程序同级目录中,至此,程序所需的第一链依赖全部准备完成。

此时在实机环境部署仍有可能报错:

loaded library "/home/sinovel/S/platforms/libqxcb.so"
./S: symbol lookup error: /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5: undefined symbol: _ZN22QWindowSystemInterface24setPlatformFiltersEventsEb, version Qt_5_PRIVATE_API
1
2
该问题为platform文件夹中QT平台动态库寻找到的依赖版本不对或缺失导致。
我们再将QT安装路径下的5.12/gcc/lib文件夹拷贝至程序所在目录的上级目录中,再启动即可正常启动。
放在上级目录的原因是,platform中的动态库QT官方在编译时第一指向即在上二层级中,放在程序所在目录上一级目录中即满足了platform中动态库的第一寻址路径,防止其从系统库中找寻版本不对的动态库甚至找不到动态库。

至此,程序可以正常部署运转。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_29852231/article/details/128853681

标签:QT5,undefined,lib,symbol,路径,程序,platform,QT
From: https://www.cnblogs.com/chinasoft/p/18431692

相关文章

  • 【Vue】【uni-app】【小程序】多层嵌套方法导致this指向出错:解析 JSON 失败: TypeErro
    项目场景:在使用vue+uni-app开发微信小程序的时候,调试报错:解析JSON失败:TypeError:Cannotreadproperty‘push’ofundefined问题描述报错如下:以下是出问题的代码:data(){return{fileLists:[],}}//上传文......
  • 万象更新 Html5 - es6 基础: null, undefined
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-es6基础:null,undefined示例如下:es6\src\basic\null_undefined.jsconsole.log(undefined==null,undefined===null);//truefalseconsole.log(null==false,null===false,undefined==......
  • Call to undefined function think\exception\config()
    错误信息 Calltoundefinedfunctionthink\exception\config() 表示在尝试调用 think\exception\config() 函数时,该函数未被定义。这可能是由于以下几个原因导致的:命名空间问题:可能是命名空间没有正确引入或定义。类文件未加载:可能是某个类文件没有正确加载或包含。......
  • 帝国CMS提示“Notice: Use of undefined constant”错误说明: php.ini配置问题
    当你在PHP应用中遇到“Notice:Useofundefinedconstant”的错误提示时,这通常是因为代码中引用了一个未定义的常量。这种错误通常不会导致程序崩溃,但会影响代码的可读性和稳定性。错误原因未定义的常量代码中引用了一个未定义的常量。错误报告级别当前的错误报告......
  • 帝国CMS提示“Notice: Use of undefined constant”错误说明
    当你在使用帝国CMS或其他PHP应用时遇到“Notice:Useofundefinedconstant”这类警告时,通常是因为PHP开启了详细的错误报告。这种警告虽然不影响程序的运行,但会影响用户体验和调试体验。以下是如何解决这个问题的具体步骤:问题分析“Notice:Useofundefinedconstant”这类警......
  • 【Python-GUI图形化界面-PyQt5模块(2)】——QApplication核心模块
     本文旨在带大家学习Python中的一种GUI图形化界面模块——PyQt5模块,将为大家详细了解PyQt5模块中函数的参数和使用:一、PyQt5简介PyQt是Qt框架的Python语言实现,由RiverbankComputing开发,是最强大的GUI库之一。官方网站:www.riverbankcomputing.com、 本文比较倾向于教会......
  • 使用webpack打包报ERROR in TypeError: Cannot read property ‘tap‘ of undefined
     https://github.com/DustinJackson/html-webpack-inline-source-plugin/issues/79错误原因因为webpack的版本号跟html-webpack-plugin的版本号不匹配,应该算是相互不兼容的原因就是说我现在webpack的版本号为4,而html-webpack-plugin的版本号是5。然后我在网上看的大佬的报错......
  • PyQt5 中的强大工具 ——QTextEdit 富文本框
    在PyQt5的世界里,QTextEdit是一个功能强大的富文本框组件,它为开发者提供了丰富的文本编辑和展示功能。本文将深入探讨PyQt5中的QTextEdit,带你领略其强大之处。一、引言在现代图形用户界面(GUI)应用程序中,富文本编辑功能是不可或缺的一部分。无论是编写文档、编辑邮件还......
  • PyQt5 使用 QStackedWidget 实现轮播展示动画,但是却疯狂闪烁的解决办法
    PyQt5使用QStackedWidget实现轮播展示动画,但是却疯狂闪烁的解决办法上篇说到,上篇见这里我们可能会遇到,当把鼠标移动到"下一页"和"上一页"按钮,又或者是Qlabel标签页时,就会疯狂闪烁,于是在这里换另一种方案,解决这个问题代码结构本文基于上篇,上篇见这里修改而来,全部代码......
  • 兼收并蓄 TypeScript - 基础: symbol
    源码https://github.com/webabcd/TypeScriptDemo作者webabcd兼收并蓄TypeScript-基础:symbol示例如下:basic\symbol.ts{//Symbol()是一个全局函数,返回一个唯一的Symbol值consta=Symbol();constb=Symbol();//b与a不同constc=Sy......