Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上

这篇具有很好参考价值的文章主要介绍了Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Linux下打包发布步骤如下

  • 编译应用程序环境:ubuntu18.04版本
  • 开发环境:Qt5.14.2
  • 编译环境:gcc_64
  • 要移植的电脑:ubuntu18.04版本,没有开发环境

第一步:打包依赖库

1、创建一个打包目录,把生成的可执行文件拷贝放在创建的打包目录下,这里我是创建了一个打包目录名称为:pack

创建目录命令:mkdir pack

cxx@cxx-virtual-machine:~/demo$ mkdir pack

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

 2、在打包目录下新建一个脚本pack.sh

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器 

内容如下:

#!/usr/bin/sh
exe="test" #程序名称
des="/home/cxx/demo/pack" #打包文件夹位置
deplist=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')  
cp $deplist $des

注意:根据你自己打包的程序名称和打包文件夹位置来修改

3、在脚本文件所在的文件目录下,命令行执行脚本:sh pack.sh

cxx@cxx-virtual-machine:~/demo/pack$ sh pack.sh 

进入 打包文件夹下,会发现很多库,这些就是要依赖的库

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

 4、接着进入Qt安装位置下编译环境的plugins目录下,这里我的Qt安装的目录是在/opt/Qt5.14.2/目录下,把plugins目录下的platforms目录复制到要打包的目录下

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

 执行命令:cp -r platforms/ /home/cxx/demo/pack

注意:/home/cxx/demo/pack要根据自己创建的打包文件夹所在位置修改

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

 注意:这是一个目录,不要把目录里面的文件拷贝出来,放进刚刚打包好的库一起

5、在qt安装编译环境目录的lib目录下,拷贝libQt5XcbQpa.so.5.14.2libQt5DBus.so.5.14.2到打包发布目录下

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器 

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

 6、检查platforms目录下是否有libqxcb.so库,如果没有,则需去qt安装目录下plugins目录下的platforms目录拷贝

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

 第二步:移植到其他电脑,并做好相关配置

1、将打包文件夹压缩,然后拷贝到要移植的电脑上,进行解压:tar -xvf pack.tar.xz

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

 2、进入到解压目录,在命令行执行,发现抱错,提示不到依赖库,

 Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

 文章来源地址https://www.toymoban.com/news/detail-528064.html

可是认真看一下,我们不是打包过来了吗?这些缺少的库,为什么还报错呢?

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

 因为在程序运行时,它默认寻找的库是在系统lib目录下,并不在发布的文件夹下,报错信息中就可以知道

3、修改库依赖路径,在命令行输入

export LD_LIBRARY_PATH='你的库路径':$LD_LIBRARY_PATH

export LD_LIBRARY_PATH='/home/cxx/tmp/pack':$LD_LIBRARY_PATH

4、再次运行,还是报错

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

报错信息不是很明确,但是根据提示肯定是少插件了,具体不知道是什么

在命令下执行:export QT_DEBUG_PLUGINS=1

这个命令可以帮我们输出程序运行时,加载插件时的调试信息

 执行命令后,再次执行,发现提示,少了libQt5XcbQpa.so.5的库,但是我们把Qt那边的库打包了libQt5XcbQpa.so.5.14.2的库,但是他要的是.so.5后缀的库,怎么办呢?Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器 5、执行ldd libqxcb.so,发现找不到libQt5XcbQpa.so.5.14.2libQt5XcbQpa.so.5

但是qt打包时我们有拿过来了,只是名字不同,我们进行软链接即可
执行命令:ln -s libQt5DBus.so.5.14.2  libQt5DBus.so.5

命令行执行:ln -s libQt5XcbQpa.so.5.14.2  libQt5XcbQpa.so.5

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

 然后再次执行,发现可以运行啦

Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上,linux,运维,服务器

 

到了这里,关于Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT----写完的程序打包为APK在自己的手机上运行

    qtcreater–工具-QTMaintenaceTool-startMaintenaceTool—登陆—添加或修改组件—找到android,安装 若是没有android这个包,就吧右边全勾上,筛选一下就会出现了 打开qtcreater–工具-外部-配置,配置android的sdk、ndk,选择路径下载等,让下边全绿 此时我们重新打开qtcreater就会有Android 的选

    2024年03月10日
    浏览(34)
  • 关于Qt程序打包后运行库依赖的常见问题分析及解决方法

    目录 一. 大致如下常见问题: (1)找不到程序所依赖的Qt库 version `Qt_5\\\' not found (required by (2)Could not Load the Qt platform plugin \\\"xcb\\\" in \\\"\\\" even though it was found (3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentation fault,或者I

    2023年04月17日
    浏览(40)
  • linux QT程序打包

    GitHub - probonopd/linuxdeployqt: Makes Linux applications self-contained by copying in the libraries and plugins that the application uses, and optionally generates an AppImage. Can be used for Qt and other applications GitHub - NixOS/patchelf: A small utility to modify the dynamic linker and RPATH of ELF executables 1、可以到上面链接上下载源代码

    2024年01月16日
    浏览(47)
  • Linux下QT程序打包

            网上有关QT程序打包的教程大多都是Windows下的教程,有关Linux下QT程序打包的教程很少,而且大多说的不是很详细,在这里我整理了以下有关Linux下QT程序打包的方法,仅供大家参考学习,有关Windows下QT程序打包的方法可以看我另一篇博客“QT项目超详细打包教程。  

    2024年02月16日
    浏览(29)
  • jenkins 打包项目,并发布到其他服务器

    在jenkins的节点服务上进行项目的打包操作。 jenkins节点服务上需要的程序: 1.git 用于从gitlab上拉取项目,到jenkins节点服务器上的workspace目录中。 2.java 用于执行jenkins的一些操作。 3.maven 如果是maven项目,要用于管理依赖。 jenkins 配置 Publish over SSH 插件。用于将节点服务上打包

    2024年02月15日
    浏览(31)
  • Qt Linux 环境中应用程序打包

    系统环境:Ubuntu20.04LTS 开发环境:Qt5.14.1 在进入程序部署打包之前,阅读官方的部署文档Deploy,通常情况下,我们在开发的时候,Qt Creator 的左下角构建模式为Debug,便于我们调试编写程序。Qt的三个构建模式Debug、Profile、Release的区别是: debug可以调试程序,而release不可以。在

    2024年02月01日
    浏览(23)
  • Linux 下使用 linuxdeployqt 打包QT程序

    当别人需要使用我们的 Qt 程序时,我们可以用打包工具将程序打包发给他,这样就不用发送整个 Qt 工程。由于 Qt 跨平台的特性,可以用不同的工具打包它。本篇文章是在 Linux 下使用 linuxdeployqt 将 Qt 程序打包成 .AppImage 应用程序。 环境介绍: Ubuntu 16.04 QT 5.12.12 linuxdeployqt(

    2024年02月03日
    浏览(33)
  • Linux下使用linuxdeployqt发布Qt程序

    1.下载 方式一:若系统在ubuntu18.04以下,可以直接去 github下载编译好的linuxdeployqt-x86_64.AppImage 应用程序文件 方式二:若系统ubuntu18.04,则github上还未提供已经编译好的AppImage,需要下载[linuxdeployqt源码](GitHub - probonopd/linuxdeployqt: Makes Linux applications self-contained by copying in the libraries

    2024年02月10日
    浏览(25)
  • VS2019打包程序安装后无法运行

    C#实践 问题:做Winform项目,用VS2019打包程序,安装后无法运行。 现象1: 应用程序: xxxx.exe Framework 版本: v4.0.30319 说明: 由于未经处理的异常,进程终止。 异常信息: System.FormatException 在 System.Number.StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalizat

    2024年02月04日
    浏览(26)
  • linux下jdk的安装和docker打包运行镜像

    https://www.oracle.com/java/technologies/downloads/#java8 从官网上下载linux版本的JDK JDK下载地址 通过ftp或者rz命令上传到linux 我这里需要把JDK安装在/usr/local目录下,在/usr/local下新建文件加java tar命令解压JDK包,解压地址是 /usr/local/java 接下来配置环境变量 vim命令打开/etc/profile 添加下面内

    2023年04月08日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包