Linux 打包Qt程序到无Qt环境Linux系统下运行,问题记录

news2024/11/28 11:00:42

Linux 环境下Qt开发的摄像头程序用到了opencv的库,需要跟Qt环境一起打包。

1.打包所有关联库用的是脚本程序。

#!/bin/bash

LibDir=$PWD"/lib"
Target=$1

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

$(mkdir $LibDir)

for Variable in ${lib_array[@]}
do
    cp "$Variable" $LibDir
done

2.新建空文件夹放入编译好的release qt程序,比如摄像头程序 camera,新建打包脚本copylib.sh放在文件夹下。

 

3.终端执行 ./copylib.sh camera 会打包 camera程序所需的关联库。

4.完了会生成lib文件夹,把lib文件夹所有文件剪切到camera同级目录下,然后把lib文件夹删除。

 

lib里脚本也会把opencv用到的库也一起打包了

5.camera同级目录下新建名称为platforms的文件夹,运行Qt程序还需要 xcb的库,需要去Qt安装目录 /opt/Qt5.12.2/5.12.2/gcc_64/plugins/platforms 里面的 libqxcb.so 拷贝到 platforms文件夹下。

 

6.新建运行程序的脚本,跟程序同名,camera.sh,放到camera同级目录下。

#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`

dirname=`dirname $0`
tmp="${dirname#?}"

if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"

 

7.到此按理说是可以运行的,但是放到其他机器下执行 ./camera.sh 会报错 xcb有问题。

 

8. 打开Qt debug 详细问题显示,执行 export QT_DEBUG_PLUGINS=1,然后再运行就会看到详细报错。

 

如上,是报错 libQt5XcbQpa.so.5 这个库文件找不到,文件夹下一起确实没有,就需要去Qt安装目录 /opt/Qt5.12.2/5.12.2/gcc_64/lib下 复制出来放到文件夹下。一定用命令 sudo cp .....复制,不要用鼠标操作,不然文件移动权限不够。

9.再次执行 ./camera.sh,同样报错libQt5DBus.so.5库找不到。也是同上一步,复制出来。

10.再次执行 ./camera.sh,这次就没问题了

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谈谈跨域?!

1.什么是跨域 跨域是一个网页脚本访问另外一个网页的内容,如果这两个网页的协议、端口,域名有一个不同就会产生跨域问题,浏览器具有一个同源策略,是一个安全策略,为了避免被恶意修改数据或者操作dom。 2.如何解决跨域…

为什么学习SpringSpring框架核心与设计思想(IOC与DI)?

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: JavaEE进阶 目录 文章目录 一、Spring是什么? 二、为什么要学习框架? 三、Spring核心概念 3.1 什么是容器? 3.2 什么是IOC? 四、再谈Spring中的 IOC 五…

高阶SQL语句

创建一个表一、按关键字排序1.1 单字段排序1.1.1 按分数排序,默认不指定是升序排列1.1.2 分数按降序排列1.1.3 结合where进行条件过滤,筛选地址是nanjing的学生按分数升序排列 1.2 多字段排序1.2.1 查询学生信息先按兴趣id降序排列,相同分数的…

C# List 详解三

目录 11.Equals(Object) 12.Exists(Predicate) 13.Find(Predicate) 14.FindAll(Predicate) 15.FindIndex(Int32, Int32, Predicate) 16.FindIndex(Int32, Predicate) 17.FindIndex(Predicate) C# List 详解一 1.Add(T),2.AddRa…

信息管理系统---Servlet+javaBean+Druid+DButil

这里是学习了Servlet后结合数据库进行增删查改–登录等作为练手项目非常适合 准备工作: 1.数据准备 这张表是用户表,用于登录 CREATE TABLE users (id int NOT NULL AUTO_INCREMENT,username varchar(25) DEFAULT NULL,password varchar(20) DEFAULT…

【C++基础(四)】内联函数和auto关键字

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C初阶之路⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 内联函数 1. 前言2. 内联函数概念3. 内联函数的特性…

数字IC实践项目(7)—CNN加速器的设计和实现(付费项目)

数字IC实践项目(7)—基于Verilog的CNN加速器(付费项目) 写在前面的话项目整体框图神经网络框图完整电路框图 项目简介和学习目的软件环境要求 资源占用&板载功耗总结 写在前面的话 项目介绍: 卷积神经网络硬件加速…

基于深度学习的高精度六类海船检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度六类海船检测识别系统可用于日常生活中检测与定位海船目标(散装货船(bulk cargo carrier)、集装箱船(container ship)、渔船(fishing boat)、普通货船&…

[golang gin框架] 41.Gin商城项目-微服务实战之后台Rbac微服务(用户登录 、Gorm数据库配置单独抽离、 Consul配置单独抽离)

上一节抽离了captcha验证码功能,集成了验证码微服务功能,这一节来看看后台Rbac功能,并抽离其中的用户登录,管理员管理,角色管理,权限管理等功能作为微服务来调用 一.引入 后台操作从登录到后台首页,然后其中的管理员管理,角色管理,权限管理等功能可以抽离出来作为 一个Rbac微服…

视频画面尺寸怎么裁剪?裁剪视频画面方法分享

如果我们的视频将在不同的平台或设备上播放,而这些设备具有不同的屏幕比例(如16:9、4:3、1:1等),则可能需要裁剪来适应目标屏幕。这样观看起来会体验效果更佳,但是该怎么裁剪视频的画面呢?给大家分享几种裁…

力扣热门100题之最长连续序列【中等】

题目描述 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums [100,4,200,1,3,2] 输出&…

Kotlin多平台最佳架构指南

在这篇文章中,我们将对 Kotlin 多平台移动端的最佳架构进行深入探讨。在2023年,作为 Android 开发者,我们会倾向于采用 MVVM 架构,因为它简单、灵活且易于测试。而作为 iOS 开发者,我们可能会选择 MVC、Viper 等架构。…

解决FLink:Missing required options are: slot.name

[ERROR] Could not execute SQL statement. Reason: org.apache.flink.table.api.ValidationException: One or more required options are missing.Missing required options are:slot.name解决 https://ververica.github.io/flink-cdc-connectors/release-2.4/content/connec…

JSR 规范详解和概述

JSR 规范详解 目录概述需求: 设计思路实现思路分析1.JSR 规范详解 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge …

Python计算特征值与特征向量案例+传统方法+雅可比Jacobi迭代法

目录 {1}几个例子🌰 {2}特征值 {3}奇异矩阵 {4}特征向量 {5}特征值和特征向量的计算方法 特征值性质 特征向量性质 {6}巩固练习 {7}迭代法 什么时候收敛?收敛速度如何? {8}雅可比迭代法 {1}几个例子🌰 例1&#xff…

Moshi Vs Gson Vs Kotlin Serialisation性能PK

Moshi Vs Gson Vs Kotlin Serialisation 定义 Gson Gson 是一个Java序列化/反序列化库,用于将Java对象转换为JSON格式,以及将JSON格式转换回Java对象。 Moshi Moshi 是一个现代化的JSON库,适用于Android和Java。它使得将JSON解析为Java对…

Django基本数据库操作

Django基本数据库操作 文章目录 Django基本数据库操作👨‍🏫内容一:基本数据库配置👨‍🔬内容二:ORM基本操作 👨‍🏫内容一:基本数据库配置 👉Django是一个流…

整车总线系列——FlexRay 四

整车总线系列——FlexRay 四 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能…

机器学习方法与原则

机器学习方法与原则 评价指标 TODO 训练集、验证集与测试集 训练集与测试集 训练集(作业): 模型可见样本标签,用于训练模型,样本数量有限。 在训练集上表现好的模型, 在其它未见样本上一定表现好么&am…

【Java】Clonable 接口

如何克隆一个引用所指的对象呢?首先一个前提,他是可克隆的,我们要实现一个Clonable 接口。我们来看一个这个接口: 可以发现里面是空的,我们把这种空接口叫做标记接口,作用就是表示当前对象是可以被克隆的。…