gcc版本

gcc版本

确保目标系统(运行环境)的 GCC 版本 高于或等于开发环境的版本,否则程序无法在目标平台运行。通过 gcc -v 可查看当前版本。

cmake生成可执行文件

强烈建议在cmakelists添加设置运行时 rpath 为 $ORIGIN/…/lib(相对路径),否则可能在其他设备上运行时会报错,笔者亲身经历

# 设置运行时 rpath 为 $ORIGIN/../lib(相对路径)
set_target_properties(${PROJECT_NAME} PROPERTIESINSTALL_RPATH "$ORIGIN/../lib"BUILD_WITH_INSTALL_RPATH TRUE
)set_target_properties(${PROJECT_NAME}c PROPERTIESINSTALL_RPATH "$ORIGIN/../lib"BUILD_WITH_INSTALL_RPATH TRUE
)

img

附上报错截图

img

img

笔者这里以sunny450_silc可执行文件为例,编译在工程路径下的build目录中,不会编译请自行搜索

构建打包目录

  1. 目录结构
package/
├── bin/
│   ├── run.sh          # 启动脚本
│   └── app             # 程序的可执行文件
├── lib/
│   ├── libQt5Core.so.5 # 依赖库 (例如 Qt 库)
│   ├── libQt5Gui.so.5  # 依赖库
│   ├── libQt5Widgets.so.5
│   ├── libstdc++.so.6  # 其他依赖库
│   └── ...             # 其他库
├── plugins/            # Qt 插件目录
│   ├── platforms/
│   │   └── libqxcb.so  # 平台插件 (用于 GUI 应用的 X11 支持)
│   └── ...             # 其他可能的插件
└── resources/          # 资源文件(可选)└── icon.png        # 图标或其他资源文件
  1. 建议放到工程路径下
mkdir -p package/{bin,lib,plugins}

  1. 复制可执行程序到bin目录下
cp build/sunny450_silc package/bin/

准备程序运行库

查看所需运行库

ldd package/bin/sunny450_silc

可以根据各个库后面的路径来找对应的库,并将它们全部复制到之前创建的bin目录下,或者使用脚本复制依赖库,笔者这里用脚本.

新建复制脚本

vim cplib.sh

写入内容

#!/bin/bash
ldd ./sunny450_silc | awk '/=> \// {print $3}' | while IFS= read -r lib; doif [ -L "$lib" ]; thencp "$(readlink -f "$lib")" ../lib/elsecp "$lib" ../lib/fi
done

添加可执行权限

chmod +x package/bin/cplib.sh

执行

./cplib.sh

复制qt插件

查看qt路径

which qmake

复制

编写运行脚本

cd bin

vim run.sh

#!/bin/bash
export LD_LIBRARY_PATH=$(dirname $0)/../lib:$LD_LIBRARY_PATH
$(dirname $0)/sunny450_silc

添加可执行权限

chmod +x run.sh

运行

压缩

tar czvf sunny450_silc.tar.gz package/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917612.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917612.shtml
英文地址,请注明出处:http://en.pswp.cn/news/917612.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决 “crypto.hash is not a function”:Vite 从 6.x 升级至 7.x 后 `pnpm run dev` 报错问题

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …

我的创作纪念日____在 CSDN一年来的成长历程和收获

365 天创作札记:在代码与文字的褶皱里,遇见 1300 束光一年来。点开csdn网站后台粉丝数的那一刻,1327 这个数字在屏幕上微微发烫。原来那些在深夜敲下的字符、调试到凌晨的代码示例、反复修改的技术拆解,真的在时光里悄悄织成了一张…

VirtualBox 的 HOST 键(主机键)是 右Ctrl 键(即键盘右侧的 Ctrl 键)笔记250802

VirtualBox 的 HOST 键(主机键)是 右Ctrl 键(即键盘右侧的 Ctrl 键)笔记250802 VirtualBox 的 HOST 键(主机键)是什么?HOST键 是 右Ctrl 键VirtualBox 的 主机键(Host Key) 是一个…

Zama的使命

全同态加密(Fully Homomorphic Encryption,FHE)实现互联网端到端加密的使命的重要里程碑。(FHE) 是一种无需解密即可处理数据的技术。它可用于在公共、无需许可的区块链上创建私人智能合约,只有特定用户才能看到交易数据和合约状态…

Go语言流式输出技术实现-服务器推送事件(Server-Sent Events, SSE)

目录引言背景与技术概述实现技术细节1. HTTP 头部配置2. 事件格式与发送3. 保持连接与刷新4. 处理连接关闭4.1 使用上下文管理连接生命周期4.2 使用通道管理客户端连接5. 客户端交互6.demo7.Go转发大模型流式输出demo引言 服务器推送事件(Server-Sent Events, SSE&…

高端房产管理小程序

系统介绍1、用户端地图找房:对接地图API,地图形式显示周边房源,支持新盘和租房两种模式查询房价走势:城市房价走势,由后台每月录入房源搜索:搜索房源,支持多维度筛选房源类型:新盘销售、房屋租赁…

文本转语音(TTS)脚本

文本转语音(TTS)脚本 概述 generate_voice.py 是一个用于生成语音的Python脚本。该脚本提供了文本转语音(TTS)功能,可以将文本内容转换为语音文件。 功能特性 文本转语音: 将输入的文本转换为语音文件多种语音选项: 支持不同的语音类型和参数批量处理: 可以处理多个…

磁盘管理与分区

磁盘管理 一、磁盘类型 SATA,SCSI,SAS类型的磁盘,在Linux中用sd来表示。 其中第一块硬盘为sda,第二块二sdb,以此类推。 第一块硬盘的第一个分区为sda1。 nvme类型的磁盘,在Linux中使用nvmeXnYpZ进行表示。 X:数字&…

Linux 逻辑卷管理

练习创建物理卷(pv->vg->lv)物理卷(PV)就像把一块块独立的硬盘,标记成 "可用于搭建 LVM 的积木",让系统知道这些硬盘可以被 LVM 管理。#把sdb这块硬盘标记为物理卷(相当于给这块积木盖章,说…

向日葵参考基因组

向日葵参考基因组升级多个版本 向日葵基因组为油脂代谢、开花调控及菊类植物进化提供新见解-文献精读151-CSDN博客 官网 https://www.sunflowergenome.org/annotations-data/

什么是爬虫协议?

什么是爬虫协议? 爬虫协议(Crawl Protocol)是指为了有效地收集网页内容而建立的一些规定和标准,用以指导网络爬虫如何在互联网上抓取信息。 爬虫协议主要指的是Robots协议(Robots Exclusion Protocol)&am…

空间平面旋转与xoy平行

空间平面旋转与xoy平行 法向量 空间平面axbyczd0的其中一个法向量(a,b,c),法向量垂直于空间平面。目标平面平行于xoy的平面为0x0yczd0;其中一个法向量为(0,0,c),c可以为不为0的任意值,取(0,0,1),目标平面的的法向量垂直于xoy平面 向量叉乘点乘 两个向量的…

odoo reportbro 拖拽式报表设计

报表设计以及下载 在实际业务中应用非常的广泛且频繁。odoo 本身也具有报表设计功能,但都是代码模式。且需要开发人员定制化开发,耗费成本高 所以引入reportbro报表设计就非常的简单快捷。低代码模式 以下以销售报表为例进行演示 报表字段配置报表界面设…

数字信号处理_编程实例1

stem([1,2,3]) 一、初始设置 %% 初始设置 % 清空工作空间,关闭无关页面 clc,clear,close all; % 绘图变量 font_size 12; %全局基础字体大小 axis_size 10; %坐标轴刻度标签字体大小 line_width 2; %绘图线条宽度 legend_size 10.5; %图例字体大小 marker_siz…

Docker 安装部署 OceanBase

1.拉取镜像 docker pull oceanbase/oceanbase-ce:latest2.启动oceanbase容器 docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE0 -d quay.io/oceanbase/oceanbase-ce3.查看oceanbase初始化的日志信息 docker logs oceanbase-ce4.进入oceanbase容器 docker exec -it o…

【华为机试】685. 冗余连接 II

文章目录685. 冗余连接 II题目描述示例 1:示例 2:提示:解题思路算法分析核心思想算法策略算法对比问题分类流程图并查集环检测流程入度统计与候选边选择情况分析决策树完整算法流程复杂度分析时间复杂度空间复杂度关键实现技巧1. 并查集优化2…

Redis之Hash和List类型常用命令

Redis之Hash和List类型常用命令一、Hash类型详解1. Hash类型的特点2. 常用命令及示例(1)设置字段值(2)获取字段值(3)删除字段(4)其他常用命令3. 应用场景二、List类型详解1. List类型…

【测试】⾃动化测试概念篇

本节⽬标:⾃动化测试Web⾃动化测试selenium1. ⾃动化1.1 ⾃动化概念⾃动化在⽣活中处处可⻅,⾃动的代替⼈的⾏为完成操作。⾃动洒⽔机,主要通上⽔就可以⾃动化洒⽔并且可以⾃动的旋转。⾃动洗⼿液,免去了⼿动挤压可以⾃动感应出洗…

Java中给List<T> 对象集合去重

Java中给List 对象集合去重List<Student> getStudentList studentMapper.getStudentList();List<Student> distinctInsurance distinctByField(getStudentList, Student::getCertNo);public static <T> List<T> distinctByField(List<T> list…

最小二乘法MSE

最小二乘法MSEx1x2x3x4x5x6x7x8x0y014805-29-31339-41064-14-2-1481-114-1-65-123-32-21305-23105114-81126-15-15-8-157-4-1221-39511-10-243-9-671-87-1404-35101371422-3-7-2-80-6-5-91-3091前景知识: 矩阵相关公式y(339−11430126−395−87422−309)y\begin{pmatrix} 339&a…