当前位置: 首页 > article >正文

关于deepin上运行Qt开发的程序

国产化替代是将来各单位的主流趋势,探索自行开发应用程序在国产操作系统上正常运行是将来的主要工作之一。本文浅尝gui程序在统信社区版——deepin上遇到的小问题。

使用Qt在deepin上做了一个类似gif的帧动画弹窗,在编译运行时,程序可以正常运行,但是会报错显示:

qt.qpa.plugin: Could not find the Qt platform plugin "dxcb" in ""

在网上查,有说需要在/etc/profile中添加环境变量

export QT_QPA_PLATFORM_PLUGIN_PATH=/path/to/Qt/plugins/platforms

试了,还是报错,但程序能运行。

直接在终端运行编译后的可执行文件,又报如下错误:

/home/shell811127/workspace/qt/build-test-unknown-Debug/test: error while loading shared libraries: libicui18n.so.63: cannot open shared object file: No such file or directory

使用ldd查看程序依赖的链接库,发现有3个依赖找不到,其中包括上面报错的库名

ldd /home/shell811127/workspace/qt/build-test-unknown-Debug/test
linux-vdso.so.1 (0x00007ffe3cfa9000)
 libQt5Widgets.so.5 => /opt/deepin-shared-libs/Qt5.15.10gles/lib/libQt5Widgets.so.5 (0x00007f7511e00000)
 libQt5Gui.so.5 => /opt/deepin-shared-libs/Qt5.15.10gles/lib/libQt5Gui.so.5 (0x00007f7511600000)
 libQt5Core.so.5 => /opt/deepin-shared-libs/Qt5.15.10gles/lib/libQt5Core.so.5 (0x00007f7511000000)
 libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f7510c00000)
 libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f751258f000)
 libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7511c1c000)
 libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7512588000)
 libGLESv2.so.2 => /lib/x86_64-linux-gnu/libGLESv2.so.2 (0x00007f7512576000)
 libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7512497000)
 libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f75115ca000)
 libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f7512478000)
 libharfbuzz.so.0 => /lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f7510eda000)
 libicui18n.so.63 => not found
 libicuuc.so.63 => not found
 libicudata.so.63 => not found
 libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7512471000)
 libpcre2-16.so.0 => /lib/x86_64-linux-gnu/libpcre2-16.so.0 (0x00007f7510b78000)
 libgthread-2.0.so.0 => /lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f751246a000)
 libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f7510a2c000)

直接使用find / -name libicui18n.so.63 查找三个缺失的文件,发现系统中存在,不过都在Qt的安装目录下:/opt/deepin-shared-libs/Qt5.15.10gles/lib/

尝试在系统目录下建立软连接:

sudo ln -s /opt/deepin-shared-libs/Qt5.15.10gles/lib/libicui18n.so.63 /usr/lib/x86_64-linux-gnu/libicui18n.so.63

再在终端执行编译后的执行文件,发现缺失的库文件名变了,说明之前的库文件系统找到了。于是尝试把刚才ldd查找的缺失库文件全部在/usr/lib/x86_64-linux-gnu/下建立软连接,程序可正常执行了。

总结,在Qt中编译运行时,程序会默认到Qt的lib目录下寻找依赖,但在操作系统中运行可执行文件,系统默认会在/usr/lib/x86_64-linux-gnu/目录下查找依赖,所以要想正常运行开发的程序,需要手动将程序依赖拷贝到系统目录下,程序方可正常运行。这有点像在windows下安装程序,需要将dll文件拷贝到system32下,只不过这里的目录是/usr/lib/x86_64-linux-gnu/。


http://www.kler.cn/a/517972.html

相关文章:

  • Excel制作合同到期自动提醒!
  • 豆包 MarsCode + 开源 = ?AI 助力开源社区新人成长
  • c语言中的数组(上)
  • Flutter中PlatformView在鸿蒙中的使用
  • 【大数据】机器学习----------强化学习机器学习阶段尾声
  • 《探秘:人工智能如何为鸿蒙Next元宇宙网络传输与延迟问题破局》
  • Spring Boot 集成 WebClient 实战教程 实现同步、异步请求处理以及响应式编程、响应式流、响应式Mono
  • 管理方法(15)-- 向华为学习根因分析
  • 小盒科技携手体验家,优化智能教育服务体验,打造在线教育新高度
  • seq2seq以及注意力机制
  • js小游戏---2048(附源代码)
  • 支持大功率输出高速频闪的图像处理用光源控制器
  • 亿坊软件前端命名规范
  • windows在命令行中切换盘符
  • springboot中DTO、VO、Entity相互转换
  • 低代码系统-产品架构案例介绍、得帆云(九)
  • 如何用VSCODE配置C++多文件编译
  • three.js+WebGL踩坑经验合集(2):3D场景被相机裁切后,被裁切的部分依然可以被鼠标碰撞检测得到(射线检测)
  • 豆包MarsCode:小C的类二进制拼图
  • ansible自动化运维实战--yaml的使用和配置(7)
  • http请求获取客户端ip
  • Flink(十一): DataStream API (八) Checkpointing
  • Arduino大师练成手册 -- 读取DS18B20
  • MacOS安装Docker battery-historian
  • 编译安装PaddleClas@openKylin(失败,安装好后报错缺scikit-learn)
  • 知识体系_统计学_03_描述性统计_概括性度量