Linux 环境下 Qt 可执行程序依赖库打包脚本

2023-05-16

文章目录

  • 一、利用` ldd` 命令查看程序需要的依赖库
  • 二、编写依赖库打包脚本
  • 三、编写执行文件脚本
  • 四、总结


Linux 环境下 Qt 可执行程序依赖库打包脚本
使用 Qt Creator 完成程序编码之后,虽然会在 Debug 或 Release 文件下生成可执行程序,但是他们是依赖 Qt Creator 环境的,拷贝到别的机器上就会提示加载依赖库错误。

那么该如何解决呢?

一、利用 ldd 命令查看程序需要的依赖库

Linux 环境下可以使用 ldd 命令查看可执行程序所需要的依赖库文件;

ldd test

			linux-vdso.so.1 (0x00007ffc29bc3000)
			libQtGui.so.4 => lib...
			...
			...

二、编写依赖库打包脚本

利用 第一步中的查找结果,可以提取出依赖库的路径,然后拷贝到指定目录即可;

#!/bin/sh
# 可执行程序名
appname="test"
# 目标文件夹
dst="./app"
# 利用 ldd 提取依赖库的具体路径
liblist=$(ldd $appname | awk '{ if (match($3,"/")){ printf("%s "), $3 } }')
# 目标文件夹的检测
if [ ! -d $dst ];then
		mkdir $dst
fi
# 拷贝库文件和可执行程序到目标文件夹
cp $liblist $dst
cp $appname $dst

把此脚本放到 程序同目录下面,执行之后即可得到一个 打包了可执行程序和依赖库的 app 目录;

三、编写执行文件脚本

编写.sh文档(.sh文件命名必须与可执行文件名字一样例:可执行文件名 test, .sh 文件名为 test.sh)
.sh文件代码如下:

#!/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 $*

四、总结

在 Linux 可以利用 shell 的优势,随心所欲的干一些好玩的工作;

如果是在 Windows 下,Qt 提供了一个 叫做 windeployqt 的工具,可以帮助你完成类似的工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 环境下 Qt 可执行程序依赖库打包脚本 的相关文章

随机推荐

  • 手把手编译基于恩智浦MCAL的工程

    摘要 本篇笔记主要记录基于MPC5744P的MACL和EB的开发编译和配置 准备工作 准备好一个在EB下配置好的工程 xff0c 这里以例程为例子来说明安装配置好编译器GreenHills或者其他编译器 xff0c 这里以GreenHill
  • cmake编译错误,将警告视为错误的解决方法

    原博客地址 xff1a https blog csdn net maxsky article details 50849219 解释一下途中框起来的部分 xff0c 第一个框其实就是失败的关键 xff0c 解决方法很简单 既然他提示了 警告
  • Tomcat 9安装与配置

    一 下载源码 地址 xff1a https tomcat apache org download 90 cgi 二 运行 xff08 1 xff09 解压zip压缩包 xff08 2 xff09 进入解压目录 xff0c 并创建一个目录 x
  • debian apt-get 国内常用 镜像源

    1 使用说明 一般情况下 xff0c 修改 etc apt sources list文件 xff0c 将Debian的默认源地址改成新的地址即可 xff0c 比如将http deb debian org改成https mirrors 163
  • linux 挂载错误 mount: unknown filesystem type LVM2_member 解决方法

    系统启动到request module runaway loop modprobe binfmt 464c挂起 利用U盘系统 xff0c 挂载硬盘出现 xff1a mount unknown filesystem type 39 LVM2
  • linux swap 内存交换分区 详细介绍

    目录 1 什么是SWAP xff0c 到底是干嘛的 xff1f 为什么要进行内存回收 xff1f 会回收的两种内存 2 swappiness到底是用来调节什么的 xff1f 那么这个swappiness到底起到了什么作用呢 xff1f 3
  • [ 云计算 华为云 ] 华为云开天 aPaaS:构建高效的企业数字化平台(上)

    文章目录 前言一 什么是 aPaaS1 1 初识 aPaaS 二 华为云开天 aPaaS2 1 华为云服务类型与种类2 1 1 基础 aPaaS2 1 2 行业 aPaaS xff08 一 xff09 工业 aPaaS xff08 二 xf
  • linux shell mkpasswd 生成随机密码

    centos 安装命令 xff1a yum install y expect 参数 xff1a l 密码的长度定义 默认是 9 d 数字个数 默认是 2 c 小写字符个数 默认是 2 C 大写字符个数 默认是 2 s 特殊字符个数 默认是
  • ERROR: glib-2.22 gthread-2.0 is required to compile QEMU

    问题描述 xff1a centos 6 5 源码编译qemu configure时出现错误 ERROR glib 2 22 gthread 2 0 is required to compile QEMU 解决方法 xff1a yum ins
  • metasploit msfconsole 命令参数

    在MSF里面msfconsole可以说是最流行的一个接口程序 很多人一开始碰到msfconsole的时候就害怕了 那么多复杂的命令语句需要学习 xff0c 但是msfconsole真的是一个强大的接口程序 Msfconsole提供了一个一体
  • 记事本输入“联通”俩字,关闭再打开乱码

    这是个很有意思的事情 这里需要提一下ANSI xff0c 不同的国家和地区制定了不同的标准 xff0c 由此产生了 GB2312 BIG5 JIS 等各自的编码标准 然后 xff0c 这些编码方式没有固定的格式 xff0c 但是比如说UTF
  • RoboRTS建图

    建图仿真 span class token function cd span RoboRTS ws src span class token function source span devel setup bash roslaunch r
  • RISC和CISC的区别

    文章目录 复杂指令集计算机 CISC 精简指令集计算机 RISC CISC与RISC的区别参考文章 RISC 精简指令集计算机 和CISC 复杂指令集计算机 是当前CPU的两种架构 它们的区别在于不同的CPU设计理念和方法 复杂指令集计算机
  • 单链表逆序(C语言)

    最近在复习数据结构 xff0c 刷题正好遇上 xff0c 所以整理一下 span class token macro property span class token directive keyword include span span
  • 各种颜色RGB值

    各种颜色RGB值 RGB 255 192 203 pink xff08 粉红 xff09 RGB 220 20 60 crimson xff08 腥红 xff09 RGB 255 240 245 lavenderblush xff08 苍白
  • 第一范式、第二范式、第三范式、BCNF范式详解

    文章目录 0 范式 NF 1 第一范式 xff08 1NF xff09 2 第二范式 xff08 2NF xff09 2 1 函数依赖2 1 1完全函数依赖2 1 2 部分函数依赖2 1 3 传递函数依赖 2 2 码2 3 非主属性 3 第
  • 数据库实体关系图(ERD)及其画法

    文章目录 1 什么是ER图 2 什么时候画ER图 2 1 数据库设计2 2 数据库调试2 3 数据库创建和补丁2 4 帮助收集需求 3 ERD符号指南4 概念 逻辑和物理数据模型5 如何绘制ER图 数据库绝对是软件系统不可分割的一部分 在数
  • Threads(异步和多线程)

    Task是 NET Framework3 0出现的 xff0c 线程是基于线程池的 xff0c 然后提供丰富的api xff0c Thread方法很多很强大 xff0c 但是太过强大 xff0c 没有限制 DoSomethingLong方法
  • Linux系统中添加库文件路径的方法

    文章目录 方法一方法二 库文件在链接 xff08 静态库和共享库 xff09 和运行 xff08 仅限于使用共享库的程序 xff09 时被使用 xff0c 其搜索路径是在系统中进行设置的 一般 Linux 系统把 lib和 usr lib
  • Linux 环境下 Qt 可执行程序依赖库打包脚本

    文章目录 一 利用 96 ldd 96 命令查看程序需要的依赖库二 编写依赖库打包脚本三 编写执行文件脚本四 总结 Linux 环境下 Qt 可执行程序依赖库打包脚本 使用 Qt Creator 完成程序编码之后 xff0c 虽然会在 De