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

Ubuntu 22.04 + Qt 6.9.3 + 阿里云 OSS C++ SDK V2 整合部署全攻略

🚨 重要提醒:环境与版本信息

在开始整合前,请确认您的环境与以下信息一致,以避免不必要的兼容性问题。

  • 操作系统:Ubuntu 22.04 x86_64
  • Qt 版本:Qt 6.9.3
  • 工作目录/home/wzh/src
  • 目标 SDK:阿里云 OSS C++ SDK V2(预览版)

1. 一次性安装系统全部依赖

打开终端,执行以下命令安装所有必要的编译工具和运行时库:

sudoaptupdate# 安装编译工具链、OSS SDK底层依赖、Qt6图形依赖sudoaptinstallbuild-essential cmakegitlibcurl4-openssl-dev libssl-dev uuid-dev libgl1-mesa-dev libxkbcommon-dev-y

2. 拉取 OSS SDK 源码

进入您的工作目录,克隆 OSS SDK 的官方仓库:

cd/home/wzh/srcgitclone https://github.com/aliyun/alibabacloud-oss-cpp-sdk-v2.git oss-sdk-src

3. CMake 编译并安装 OSS SDK

我们将 SDK 编译并安装到独立的第三方库目录,便于项目管理。

cd/home/wzh/src/oss-sdk-srcmkdirbuild&&cdbuild cmake..\-DCMAKE_INSTALL_PREFIX=/home/wzh/src/thirdparty/oss-v2\-DBUILD_SHARED_LIBS=ON\-DCMAKE_CXX_STANDARD=17make-j$(nproc)sudomakeinstall

参数说明

  • -DCMAKE_INSTALL_PREFIX:指定 SDK 的安装路径。
  • -DBUILD_SHARED_LIBS=ON:编译为动态链接库(.so 文件),便于发布。
  • -DCMAKE_CXX_STANDARD=17:强制使用 C++17 标准编译。

4. 库瘦身(发布必备)

为减小最终发布程序的体积,可以对生成的动态库进行瘦身处理:

cd/home/wzh/src/thirdparty/oss-v2/lib strip libalibabacloud_oss_v2.so

5. Qt6 工程完整.pro配置

QT += core gui widgets concurrent network CONFIG += c++17 thread exceptions rtti stl # OSS SDK 路径配置 OSS_ROOT = $$PWD/thirdparty/oss-v2 INCLUDEPATH += $${OSS_ROOT}/lib INCLUDEPATH += $${OSS_ROOT}/include LIBS += -L$${OSS_ROOT}/lib LIBS += -lalibabacloud_oss_v2 -lcurl -lssl -lcrypto -luuid # RPATH 配置:确保开发机和目标设备都能找到动态库 unix { QMAKE_RPATHDIR += $${OSS_ROOT}/lib QMAKE_RPATHDIR += $${OPENCV_ROOT}/lib QMAKE_RPATHDIR += $${ORIGIN}/thirdparty/oss-v2/lib QMAKE_RPATHDIR += $${ORIGIN}/thirdparty/opencv/install/lib }

6. 代码引入头文件示例

在需要使用 OSS 功能(如上传、下载文件)的.cpp文件顶部,添加以下头文件:

#include<alibabacloud/oss/OssClient.h>usingnamespaceAlibabaCloud::OSS;// 后续即可使用 OssClient 等类进行开发

7. 发布到目标设备的部署操作

发布时,只需携带可执行程序和必要的动态库,无需头文件。

7.1 打包目录结构

建议按以下结构组织发布文件夹:

你的程序发布文件夹/ ├── 你的Qt可执行程序 └── thirdparty/ └── oss-v2/lib/libalibabacloud_oss_v2.so # OpenCV库文件也应放在类似位置,例如 thirdparty/opencv/install/lib/

7.2 目标设备系统依赖安装

在目标设备上(仅需执行一次),安装运行所需的基础系统库:

sudoaptinstalllibcurl4-openssl-dev libssl-dev uuid-dev

7.3 运行程序

赋予可执行权限并运行你的 Qt 程序:

chmod+x ./你的程序名 ./你的程序名

8. 常见报错与快速修复

  • 链接报错undefined reference to ‘uuid_generate‘
    检查.pro文件的LIBS中是否包含了-luuid

  • 运行时错误error while loading shared libraries: libalibabacloud_oss_v2.so

    1. 核对设备上thirdparty目录的层级是否与打包时一致。
    2. 确认.pro文件中的QMAKE_RPATHDIR配置正确,特别是$${ORIGIN}/thirdparty/oss-v2/lib路径。
  • C++ 语法报错
    确认.pro文件中已配置CONFIG += c++17

  • Qt6 程序启动失败,提示图形相关错误
    确保在第一步已完整安装系统依赖libgl1-mesa-dev


提示:本文提供的步骤已在 Ubuntu 22.04 + Qt 6.9.3 环境下验证通过。整合过程中如遇其他问题,可参考阿里云 OSS 官方文档或 Qt 社区资源。

官方文档:如需了解 OSS C++ SDK V2 的完整 API、配置项及高级用法,请参阅 阿里云 OSS C++ SDK V2 官方文档。

http://www.jsqmd.com/news/1217731/

相关文章:

  • 2026年揭秘:Aozeba的真正出身,是澳大利亚品牌吗?
  • 同时降重降AI率的方法:一篇讲清怎么两关都过
  • 2026 年现阶段金湖口碑好的加气站全套设备拆除回收供应厂家全面解析与选购指南,拆除加气站,这笔“烫手山芋”如何变现? - 行业推荐官【认证】
  • Python条件判断与缩进规则详解
  • Android应用签名与密钥管理全指南
  • Kubernetes原生MLOps:模型生产化落地的七步法与故障排查
  • React Native APK签名打包全流程详解
  • Eclipse极简集成AAR方案:1分钟完成Android库迁移
  • 重庆百达翡丽回收价格查询及各大平台实测排行(2026年7月最新) - 尊奢回收二奢平台
  • MySQL架构揭秘:锁机制
  • 越华环保集团数字化污水治理系统架构拆解:从边缘采集到数字孪生闭环
  • Android Socket编程实战:TCP/UDP实现与优化技巧
  • 模型无关网关:生产级AI系统的容灾底座与落地实践
  • 大型机排序工具数据类型解析与应用实践
  • python:字典
  • 聚友游戏源码版本盘点:主流分支、功能差异与二次开发方向
  • 74HC595移位寄存器原理与应用全解析
  • 杭州萧然医院服务好不好?
  • 郑州欧米茄回收价格查询及靠谱平台实测排行(2026年7月最新数据) - 诚收名表回收平台
  • Python入门指南:版本选择与安装配置详解
  • Unity性能优化实战:从CPU/GPU瓶颈诊断到内存管理全解析
  • Spring框架核心原理与Java企业级开发实践
  • AngularJS ngMessageFormat模块国际化实战指南
  • 从Notebook到生产:机器学习模型的可运维性与可观测性工程实践
  • 全球 AI 大佬都在用的“AI 使用说明书“:Andrej Karpathy 的 CLAUDE.md 究竟是什么?
  • GTM竞争分析实战指南:从信息源分级到决策流图谱
  • 51单片机模拟工业自动化控制:LED与按键实现气缸运动控制
  • VC++6.0集成TeeChart实现多曲线动态绘制与平滑处理实战
  • FastAPI实现OAuth2认证的完整指南
  • DirectX 11实战:从零构建C++ 2D帧动画系统,深入图形渲染原理