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

Qt开发经验 --- 避坑指南(13)

文章目录

    • @[toc]
      • 1 安装Qt creator后无法使用debug调试
      • 2 安装VS后之间安装自带的Windows SDK
      • 3 Qt配置ssl
      • 4 ubuntu编译linuxdeployqt

更多精彩内容
👉内容导航 👈
👉Qt开发经验 👈

1 安装Qt creator后无法使用debug调试

安装最新版本Qt creator15.0.0后,MSVC无法调试,是Qt creator没安装完整,导致安装路径下缺少文件;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2 安装VS后之间安装自带的Windows SDK

  • 打开【应用】【安装的应用】;

  • 找到【Windows Software Development Kit】;

    在这里插入图片描述

  • 点击右侧...,选择【修改】;

    在这里插入图片描述

  • 选择【Change】安装或者【Repair】修复已经安装过的环境;

    在这里插入图片描述

  • 勾选【Debugging Tools for Windows】,再点击【Change】进行安装。

    在这里插入图片描述

3 Qt配置ssl

由于世界上某些地区的进出口限制,Qt默认安装没有OpenSSL工具包;

从Qt 5.6版本开始,官方支持的OpenSSL版本是1.0.0或更高版本;

从Qt版本5.15开始,官方支持的OpenSSL版本是1.1.1或更高版本。

Qt版本5.15.1以后也兼容OpenSSL 3。

Qt安装包附带了OpenSSL支持,如果使用到openssl,需要自己配置环境;

新版本Qt在线安装时好像可用选择安装openssl。

使用地址

  • QT文档https://doc.qt.io/archives/qt-6.6/ssl.html

  • https://www.openssl.org/

  • https://openssl-library.org/source/index.html

  • https://openssl-library.org/source/old/index.html

  • https://github.com/openssl/openssl

Openssl配置

  • 查看当前环境是否配置了openssl和支持的版本
qDebug() << "输出当前QT支持的openSSL版本: " << QSslSocket::sslLibraryBuildVersionString();
qDebug() << "OpenSSL支持情况: " <<QSslSocket::supportsSsl();
qDebug() << "OpenSSL运行时SSL库版本: " << QSslSocket::sslLibraryBuildVersionString();
  • windows可以下载对应版本的openssl,然后进行安装(轻量级就可以);

    • 安装后将openssl/bin文件夹下的libcrypto-1_1-x64.dll、libssl-1_1-x64.dll两个动态库拷贝到qt的编译器路径下,注意区分32和64位

    • D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin

    • D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin

  • linux可用下载对应版本源码;

    • 使用../config命令构建;
    • 使用make -j8 命令编译;
    • 然后使用sudo cp libcrypto.so* libssl.so* /opt/Qt5.12.12/5.12.12/gcc_64/lib/命令将编译生成的动态库复制到Qt安装路径下的编译器的lib文件夹下。

4 ubuntu编译linuxdeployqt

ubuntu22.04

新版本的ubuntu无法直接使用linuxdeployqt,需要自己编译

安装依赖

sudo apt install libfuse2 patchelf

libfuse2 Linux FUSE(用户空间中的文件系统)接口的参考实现。

patchelf用于修改现有的ELF可执行文件和库;

用下面的命令可以设置程序从相对路径链接动态库;

  • $ORIGIN是一个特殊的占位符,它表示当前可执行文件所在的目录

  • RPATH 是一个嵌入到 ELF 文件中的路径列表,用于告诉动态链接器在运行时去哪里查找共享库。

patchelf --set-rpath '$ORIGIN/lib/' ./RadarServer     # 设置程序动态库链接路径
patchelf --print-rpath ./RadarServer   # 打印链接路径
  • 下载源码

  • 错误1:找不到libQt5Core.so. 5

    • 将linuxdeployqt复制到/opt/Qt5.14.2/5.14.2/gcc_64/lib路径下。
    • 或者在.bashrc文件中添加环境变量export LD_LIBRARY_PATH=/opt/Qt5.14.2/5.14.2/gcc_64/lib:$LD_LIBRARY_PATH
./linuxdeployqt: error while loading shared libraries: libQt5Core.so. 5: cannot open shared object file: No such file or directory
  • 错误2:需要安装依赖sudo apt install libfuse2
appimage 错误dlopen(): error loading libfuse.so.2
  • 错误3:打包依赖后还是找不到动态库,可能是patchelf没执行,需要手动执行。

验证

  • 打包完成后使用下面命令清除动态库环境变量
export LD_LIBRARY_PATH=""
  • 然后再使用ldd命令查看链接动态库是否指向相对路径
ldd ./可执行程序


http://www.xdnf.cn/news/395677.html

相关文章:

  • 梦熊联盟:202505基础语法-题解
  • 沐言智语开源Muyan-TTS模型,词错率、语音质量评分都处于开源模型的一线水平,推理速度相当快~
  • Go语言运算符详解
  • No module named ‘xxx’报错原因及解决方式
  • DedeCMS-Develop-5.8.1.13-referer命令注入研究分析 CVE-2024-0002
  • css背景相关
  • 【大模型】解决最新的Dify1.3.1版本 无法基于Ollama成功添加模型
  • 进程间关系与守护进程
  • Quantum convolutional nerual network
  • 责任链模式
  • 苍穹外卖(数据统计–Excel报表)
  • C语言常见的文件操作函数总结
  • 互联网大厂Java求职面试:电商商品推荐系统中的AI技术应用
  • 超标量处理器设计4-分支预测
  • TypeScript 装饰器高级用法详解
  • Kubernetes排错(十四):Pod状态异常排查手册
  • 深入理解 TypeScript 中 unknown 类型:安全性与使用指南
  • 深度学习:系统性学习策略(二)
  • OBS studio 减少音频中的杂音(噪音)
  • LLM初识
  • 【CTF】Linux Shell RCE绕过(bypass)技术总结
  • 【Tools】VScode远程调试linux服务器(打断点可视化界面方式)
  • 【文本数据找重复记录】2021-11-23
  • C++编程中,什么是野指针?
  • SpringBoot3.0 分组校验
  • jsAPI
  • Docker 部署Nexus仓库 搭建Maven私服仓库 公司内部仓库
  • BI PaaS化实践:衡石如何通过可插拔数仓加速企业数据湖仓一体?
  • UNet网络 图像分割模型学习
  • 用户线程和守护线程