linux平台下qt程序的编译以及使用linuxdeployqt打包可执行程序和在高版本22.04ubuntu下使用linuxdeployqt打包文件的问题

这篇具有很好参考价值的文章主要介绍了linux平台下qt程序的编译以及使用linuxdeployqt打包可执行程序和在高版本22.04ubuntu下使用linuxdeployqt打包文件的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写于2023.10.20

最近遇到了一个问题,需要把在windows下面写好的qt程序打包成linux可以运行的文件进行发布,而且最终目标和windows一样,要在一个近乎于纯净环境的机器上进行运行,故而有了这个博客,记录了我们小组攻克的一系列问题

由于是已经攻克过后才有的这一篇博客,所以可能有些细节我已经想不起来了,但大体过程已经写在了下面

首先说一下我们的环境,用的是ubuntu 22.04.3LTS,下面附上官网的连接

https://cn.ubuntu.com/download/desktop

qt生成可执行文件linux,linux,ubuntu,运维

之后给ubuntu配置源,这里我配置的是科大的源

首先打开中国科学技术大学镜像网站

USTC Open Source Software Mirror

点击网页右

侧“配置软件源”按键。如下图所示,在弹出的界面中,发行版镜像选择“Ubuntu

源使用帮助”。

qt生成可执行文件linux,linux,ubuntu,运维

进入 Ubuntu 源使用帮助后,如下图所示,在手动更改配置文件部分复制选

框中的源配置信息。

qt生成可执行文件linux,linux,ubuntu,运维

注意不同的 Ubuntu 版本需要对应不同的源,Ubuntu 版本有对应代号,替换

源中代号即可跟换版本。

复制号源配置信息后,使用 CTRL+ALT+T 快捷键打开 Terminal,输入如下图所

示命令, 备份源配置文件,并使用 gedit 软件打开该文件,然后将复制的信息覆

盖源信息并保存

qt生成可执行文件linux,linux,ubuntu,运维

使用科大源配置信息覆盖/etc/apt/sources.list 文件信息后,保存文件内容,然

后再终端中输入 sudo apt-get update 命令并执行,系统会自动更新索引信息,使

配置生效。运行 sudo apt-get upgrade 命令,可以对系统安装软件进行更新

qt生成可执行文件linux,linux,ubuntu,运维

上面的图片都是我使用的教程截下来的,因为我已经解决这个问题了,请原谅懒惰的我不再用一个新机给大家演示(其实这个帖子我也鸽了好几天)

之后安装vim,gcc

在终端输入并运行 sudo apt-get install vim 指令,系统即可自动安装 vim 编辑

器。vim 软件安装过程如下图所示:

qt生成可执行文件linux,linux,ubuntu,运维

同 vim 编辑器安装类似,早终端输入并运行 sudo apt-get install gcc,系统即

可自动完成 gcc 编译器的安装。

至此完成部分准备工作,之后我们开始安装qt

Qt6的话,请到下面这个网址下载在线安装器

Index of /qt/official_releases/online_installers/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

安装完了之后进入这个下载出来的文件的文件夹,右键,在终端打开,然后输入代码,首先赋予可执行权限,也可以直接右键然后在属性里勾选

sudo 777 chmod qt-xxxxxx.run

./ qt-xxxxxx.run

这个chmod后面是你下载下来的文件名,不需要我多说吧,不能理解我也没办法

然后运行,之后创建文件,我这里下的是qt6.4.2,

qt生成可执行文件linux,linux,ubuntu,运维

Additional libraries里面的组件尽量勾选,但webengine一定不能少,如果你没选也可以在qt的目录下面找到这个文件双击,补全一下

qt生成可执行文件linux,linux,ubuntu,运维

qt生成可执行文件linux,linux,ubuntu,运维

之后打开你的程序,记得一定要用qmake,打开.pro,然后在里面添加这么一行

qt生成可执行文件linux,linux,ubuntu,运维

QMAKE_LFAGS += -no-pie

添加进你的.pro文件里面

之后进行release的构建,这里需要注意的是如果你的windows程序源码用到了Qactive里面的东西,例如axcontainer,那么会报错,这个模块是只有windows才会有的,所以只能够把相关代码屏蔽或者删除,这一点我无能为力

之后配置qt环境,在命令行输入这一句

qt生成可执行文件linux,linux,ubuntu,运维

之后打开了文件,可以看到是这样的

qt生成可执行文件linux,linux,ubuntu,运维

Qt的配置是这几行

qt生成可执行文件linux,linux,ubuntu,运维

Qt的配置大家根据自身的路径来修改就好,我的用户名是pacific,大家要改成自己的用户名才行

之后也加上这一行,后面有用

qt生成可执行文件linux,linux,ubuntu,运维

之后在控制台输入

source ~/.bashrc

让环境立即生效

到这里我们就把qt的问题解决了,之后我们开始正式进入打包环节,打包呢,需要很多很多东西的加持,其中遇到的坑我也会给大家一一说明,首先大家知道windows下面有一个命令叫做windeployqt,但很遗憾,linux下面没有这个命令,但所幸github上面有工具,所以我们来下载一下

下面附上github网址

https://github.com/probonopd/linuxdeployqt/releases

打开过后大家可以看到是这样的

qt生成可执行文件linux,linux,ubuntu,运维

这里我们要看自己的ubuntu版本,如果你用的是18.04还是16.04以下的话,可以直接下载工具,就是这个

qt生成可执行文件linux,linux,ubuntu,运维

而如果你和我一样是比较新的ubuntu,我们需要下载源码,大家看到这里不要急,觉得麻烦,很多博客天天说的很简单,但其中很多问题他们都没有提到过,例如这个打包过程中会报错什么的,我是一步一步走下来的,所以自然知道该怎么做,而不是没头没尾的抄袭,网上的博客说自己是20.04的ubuntu,居然没报错,这显然是不可能的

至于为什么要下载源码是因为自带的工具在高版本ubuntu会报错显示the host system is too new,我想从网上找个截图但没找到,我自己的已经解决问题了,但我确实亲身经历过,以下是找到的报错

ERROR: The host system is too new.
Please run on a system with a glibc version no newer than what comes with the oldest.
still-supported mainstream distribution, which currently is glibc 2.20.
This is so that the resulting bundle will work on most still-supported Linux distributions.
For more information, please see
https://github.com/probonopd/linuxdeployqt/issues/340

回归正题,我们下载源码

qt生成可执行文件linux,linux,ubuntu,运维

之后解压到ubuntu桌面并且打开.pro

qt生成可执行文件linux,linux,ubuntu,运维

如果你不是这样的,而是只有一个.pro文件没有下面的src tests还有tools,那么很遗憾,你可能需要换一个版本或者自行解决了,我之前用的是6.5.2,就是会打不开

之后进到这个文件里面

qt生成可执行文件linux,linux,ubuntu,运维

看到这串蓝色代码了吗?注释掉

qt生成可执行文件linux,linux,ubuntu,运维

然后调整成release,右键linuxdeployqt那个文件夹然后右键点击构建

qt生成可执行文件linux,linux,ubuntu,运维

构建完成就会像上面这样,然后到生成的文件夹里面的bin文件夹下面可以看到这

qt生成可执行文件linux,linux,ubuntu,运维

右键在终端运行,然后输入

chmod 777 linuxdeployqt

sudo mv linuxdeployqt  /usr/local/bin

然后可以在控制台输入

linuxdeployqt -appimage

正常情况下就可以输出这个了

qt生成可执行文件linux,linux,ubuntu,运维

如果不是的话,检查一下之前export的qt路径,

如果正常之后大家可以测试一下,把你要打包的那个可执行文件放到文件夹下面然后再终端打开并且输入linuxdeployqt xxxx ,这里的xxxx是你的文件名,那么大概率会出现下图的错误,这个错误是我截图的,我本身遇到过这个错但是解决了

qt生成可执行文件linux,linux,ubuntu,运维

这个是缺少patchelf导致的,大家可以点击下面的连接,

Channels for NixOS project(s)

然后按照域名索引进行选择patchelf下载就可以

下载后解压进入文件夹执行如下命令

./configure

make

sudo make install

之后还需要下载最后一个包

Appimagetool

下载地址

https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage

下载完成后执行如下命令:

sudo mv appimagetool-x86_64.AppImage appimagetool

chmod 777 appimagetool

sudo./appimagetool /usr/local/bin

之后进入/usr/local/bin ,你会看到以上的三个文件,linuxdeployqt,patchelf,appimagetool

之后把编译生成的包放到文件夹下面,然后输入

Linuxdeployqt xxx -appimage即可开始打包

期间也会有其他错误,例如没有fuse运行不了之类的,这种错误直接

Sudo apt-get install fuse

这样获取fuse能解决百分之九十九的问题

其他的可以自行查阅,问题不是很大的,

但打包任然会报一个错误

qt生成可执行文件linux,linux,ubuntu,运维

别慌,一切尽在掌握,打开打包生成的这个文件

qt生成可执行文件linux,linux,ubuntu,运维

修改成这样

qt生成可执行文件linux,linux,ubuntu,运维

然后再次执行,就可以打包成功并且得到这个文件

qt生成可执行文件linux,linux,ubuntu,运维

这个就是我们最后的打包啦,到别人的电脑上的话别人要首先赋予他可执行权限然后在命令行,注意是命令行,输入./xxxx xxxx是打包出来的.appimage的全称,包括后缀,虽然linux不看后缀,就可以在其他电脑上运行了,当然实测也需要新电脑安装fuse

之间还有一些问题就是高版本的ubuntu打包出来的程序在低版本上面运行会报错,显示glibc版本缺失,这个问题我还没有解决,只能够说尽量在同版本甚至更高版本上面运行打包的程序吧,或者降低打包的电脑的版本也不失为一种解决方案,但仍然有待测试

最后,看在我是个本科生的份上,各位哥哥姐姐能不能给我点一个赞呢?真的是本科生啊!文章来源地址https://www.toymoban.com/news/detail-761735.html

到了这里,关于linux平台下qt程序的编译以及使用linuxdeployqt打包可执行程序和在高版本22.04ubuntu下使用linuxdeployqt打包文件的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 银河麒麟下,QT5.12.10、linuxdeployqt安装及DEB打包教程

    2.1.1.将“打包工具.tar.gz”解压,里面有两个文件 linuxdeployqt libz.so 2.1.2.在解压当前目录下输入一下命令: sudo cp ./linuxdeployqt /usr/local/bin sudo rm /usr/lib/aarch64-linux-gnu/libz.so sudo cp ./libz.so /usr/lib/aarch64-linux-gnu sudo chmod +x /usr/local/bin/linuxdeployqt 2.1.3.验证打包工具安装成功命令: $linu

    2024年02月04日
    浏览(154)
  • Tauri开发的程序,使用github action快速跨平台编译并发布流程,包括Windows、mac、m芯片、linux等,以及常见报错

    Tauri 严重依赖原生库和工具链,因此目前无法在某一平台实现交叉编译。最佳选择是使用托管在 GitHub Action、Azure Pipelines、GitLab 或其他选项上的 CI/CD 管道进行编译。管道可以同时为每个平台运行编译,使编译和发布过程更加容易。 为了便于设置,官方目前提供 Tauri Action。

    2024年02月10日
    浏览(67)
  • 统信UOS系统开发笔记(七):在统信UOS系统上使用linuxdeployqt发布qt程序

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131411975 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门) 上一篇:《统信

    2024年02月11日
    浏览(44)
  • Qt 编译程序打包依赖库

    windows环境 使用windeployqt.exe 打包 linux环境 使用ldd命令打包

    2024年02月13日
    浏览(36)
  • QT6修改程序图标和名字以及打包部署

    只需要将ico文件放在工程文件的同级文件夹中,然后在pro文件中加入 RC_ICONS=ico文件的名字 参考:https://blog.csdn.net/chqaz123/article/details/126607641,https://blog.csdn.net/weixin_41255248/article/details/129538146 与参加链接中有些不同,按照一下步骤 **一、**自己下载一个ico图片作为备用, 最好

    2024年02月11日
    浏览(35)
  • 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日
    浏览(56)
  • Linux下QT程序打包

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

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

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

    2024年02月01日
    浏览(39)
  • Linux 打包Qt程序到无Qt环境Linux系统下运行,问题记录

    Linux 环境下Qt开发的摄像头程序用到了opencv的库,需要跟Qt环境一起打包。 1.打包所有关联库用的是脚本程序。 2.新建空文件夹放入编译好的release qt程序,比如摄像头程序 camera,新建打包脚本copylib.sh放在文件夹下。   3.终端执行 ./copylib.sh camera 会打包 camera程序所需的关联库。

    2024年02月16日
    浏览(42)
  • Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上

    一、Linux下打包发布步骤如下 编译应用程序环境:ubuntu18.04版本 开发环境:Qt5.14.2 编译环境:gcc_64 要移植的电脑:ubuntu18.04版本,没有开发环境 第一步:打包依赖库 1、创建一个打包目录,把生成的可执行文件拷贝放在创建的打包目录下,这里我是创建了一个打包目录名称为

    2024年02月12日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包