精华内容
下载资源
问答
  • linux下qt程序打包发布
    2022-02-23 18:29:09

    1.找个位置新建空文件夹Progream,存放打包后的文件;

    2.将Qt项目用Release模式编译运行一遍,确保在shadow目录下生成可执行程序 Progream;

    shadow目录
    3.在shadow目录中新建脚本copylib.sh;

    #!/bin/bash

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

    lib_array=($(ldd $Target | grep -o “/." | grep -o "/./[1]*”))

    $(mkdir $LibDir)

    for Variable in l i b a r r a y [ @ ] d o c p " {lib_array[@]} do cp " libarray[@]docp"Variable" $LibDir
    done
    4.在Terminal中,通过指令赋值权限 ;

    sudo chmod 777 copylib.sh
    5.在Terminal中,输入./copylib.sh progream

    其中, giptables 是运行copylib.sh 脚本的参数,脚本实际上是调用了 ldd ocs指令获得ocs运行时需要哪些库,并将库都复制放到当前目录的lib文件夹中。

    生成lib文件夹
    6.将① progream的可执行程序、② lib文件夹里面全部的文件 复制到 Progream文件夹中;

    7.将lib文件夹删除;

    8.进入Qt的安装目录,找到platforms目录;

    platforms目录位置
    我的路径是:/home/book/Qt5.12.6/5.12.6/gcc_64/plugins/platforms
    PS: Terminal中输入pwd 是显示当前的绝对路径
    9.将第3步的copylib.sh放到platforms目录中,并运行 ./copylib.sh libqxcb.so,这时也会得到一个lib文件夹 、libqxcb.so的库文件;

    lib文件夹 、libqxcb.so的库文件
    注:xcb是移植的重要文件,如果拷贝错误将不能在目标主机运行。
    10.将platforms整个文件夹拷贝到Progream,并删除原先文件夹中的libxcb.so库文件夹;

    拷贝platforms
    疑问1:这里的原先文件夹是指Qt安装目录下的那个platforms文件夹吗?
    疑问2:要删除的是 libxcb.so 文件吗?还是说作者本来想打的是 libqxcb.so 呢?

    要删除这两个 libxcb 文件吗?
    11.将拷贝后的库文件夹的东西全部放到SerialPort目录下。即将Progream/platforms/lib/* 拷贝到Progream下。并删除Progream/platforms/lib文件夹及其所属文件。

    12.在Progream文件夹中新建脚本progream.sh

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

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

    if [ “KaTeX parse error: Expected '}', got 'EOF' at end of input: {dirname%tmp}” != “/” ]; then
    dirname= P W D / PWD/ PWD/dirname
    fi
    LD_LIBRARY_PATH=$dirname
    export LD_LIBRARY_PATH
    d i r n a m e / dirname/ dirname/appname “$@”

    新建脚本
    13.赋值赋值权限,chmod 777 progream.sh ;

    14.到现在,可以将Progream文件夹拷贝到目标主机上运行了。在目标主机上运行程序是采用./progream.sh运行,而不是直接点击progream.


    1. :space: ↩︎

    更多相关内容
  • 目录Linux下QT程序打包发布流程Ⅰ. 打包流程1.编译2.使用ldd命令查看和导出需要的库3.编写执行程序的sh文件4.运行程序5.打包发布Ⅱ. 为程序添加快捷方式,图标,启动器启动Ⅲ. 碰到的问题#1 普通用户能正常运行...
  • Linux 下Qt应用程序打包发布方法

    千次阅读 2022-03-08 17:31:18
    2、将Qt打包脚本“deployqtapp.sh”放在build-项目名称-Desktop_4bec8a-Release文件夹内,deployqtapp.sh源码如下: 注意:将第98行的libqxcb.so 替换到本机“libqxcb.so”的路径。 3、执行“deployqtapp.sh”...

    1、首先选择Qt中的“Release”模式,然后点击Run,在Qt工作空间生成相应的

    build-项目名称-Desktop_4bec8a-Release文件夹

    2、将Qt的打包脚本“deployqtapp.sh”放在build-项目名称-Desktop_4bec8a-Release文件夹内,deployqtapp.sh源码如下:

    注意:将第98行的libqxcb.so 替换到本机下“libqxcb.so”的路径。

    3、执行“deployqtapp.sh”脚本,XXX表示在build-项目名称-Desktop_4bec8a-Release文件夹内的可执行文件名。

    sh deployqtapp.sh XXX

    4、在build-项目名称-Desktop_4bec8a-Release文件夹内找到ota_deploy压缩文件,解压后运行ota_deploy文件夹内的可执行文件,运行成功即可。

    #!/bin/bash
    #################    Qt打包脚本源码    ########################
    #================================================================================
    # Copyright (c) 2012 - 2013 by William Hallatt.
    # 
    # This script is free software: you can redistribute it and/or modify it under
    # the terms of the GNU General Public License as published by the Free Software
    # Foundation, either version 3 of the License, or (at your option) any later
    # version.
    #
    # This script is distributed in the hope that it will be useful, but WITHOUT
    # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    # FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License along with
    # this script (GNUGPL.txt).  If not, see
    #
    #                    <http://www.gnu.org/licenses/>
    # 
    # Should you wish to contact me for whatever reason, please do so via:
    #
    #                 <http://www.goblincoding.com/contact>
    # 
    #================================================================================
    
    # Copy your executable as well as this script to the directory where you 
    # want to create the final tar ball.  To execute, simply pass the name of the
    # executable as command line parameter to this script.
    #
    # Worth noting is that I built Qt from source myself, you may or may not need 
    # additional plugins, etc and different or additional directory structures and
    # will have to edit this script to suit your needs!
    
    if [ $# -ne 1 ]
    then
            echo "Usage: $0 <executable name>"
            exit 1
    fi
    
    deployscript=${0##*/}	# delete path and leave file name remained
    executable=$1
    
    # Obtain the Linux flavour and version.
    # distro=`lsb_release -d | awk '{print $2$3$4}' | sed 's/\./_/g'`
    
    # Create the directory that will be tarred up for distribution.
    # tardir=`echo $executable"_"$distro | awk '{print tolower($0)}'`
    tardir=`echo $executable"_deploy" | awk '{print tolower($0)}'`
    mkdir $tardir
    echo "Created tar ball directory: "$tardir
    
    # Copy executable across.
    chmod u+x $executable
    cp $executable $tardir
    echo "Copied executable "$executable" to "$tardir
    
    # Copy other files and dirs.
    nfiles=0
    ndirs=0
    for files_dirs in `ls ./`
    do
      if [ "$files_dirs" != "$deployscript" ] && [ "$files_dirs" != "$executable" ] && [ "$files_dirs" != "$tardir" ]; then
    	if [ -d "$files_dirs" ]; then
    		ndirs=$(($ndirs+1))
    	else
    		nfiles=$(($nfiles+1))
    	fi
    
      	cp -r $files_dirs $tardir
      fi
    done
    echo "Copied other $nfiles file(s) and $ndirs dir(s) to "$tardir
    
    # Create the libs directory.
    libsdir=$PWD/$tardir/libs
    mkdir $libsdir 
    echo "Created libs directory: "$libsdir
    
    # Copy all dependencies across to the tar directory.
    echo "Copying dependencies..."
    
    for dep in `ldd ./$executable | awk '{print $3}' | grep -v "("`
    do
      cp $dep $libsdir
      echo "Copied dependency "$dep" to "$libsdir
    done
    
    # You will need to change this to point to wherever libqxcb.so lives on your PC.
    qtplatformplugin=/usr/lib/aarch64-linux-gnu/qt5/plugins/platforms/libqxcb.so #替换到本机下“libqxcb.so”的路径
    qtplatformplugindir=$tardir/platforms
    mkdir $qtplatformplugindir
    echo "Created platforms directory: "$qtplatformplugindir
    cp $qtplatformplugin $qtplatformplugindir
    echo "Copied platform "$qtplatformplugin" to "$qtplatformplugindir
    
    echo "Copying qtplatformplugin dependencies..."
    for dep in `ldd $qtplatformplugin | awk '{print $3}' | grep -v "("`
    do
      cp -u $dep $libsdir
      echo "Copied qtplatformplugin dependency "$dep" to "$libsdir
    done
    echo "Copied qtplatformplugin dependencies"
    
    # Create the run script.
    execscript=$tardir/"run$executable.sh"
    echo "Created run script: "$execscript
    
    echo "#!/bin/sh" > $execscript
    echo "export LD_LIBRARY_PATH=\`pwd\`/libs" >> $execscript
    # echo "export QT_QPA_FONTDIR=\`pwd\`/fonts" >> $execscript
    echo "./$executable" >> $execscript
    
    # Make executable.
    chmod u+x $execscript
    
    # Create a README
    echo "Creating README..."
    
    readme=$tardir/README
    echo "================================================================================" >> $readme
    echo "Please launch $executable via" >> $readme
    echo "" >> $readme
    echo "                 $execscript" >> $readme
    echo "" >> $readme
    echo "If you run into any trouble regarding dependencies, all you need to do is to" >> $readme
    echo "run " >> $readme
    echo "                 $fixscript " >> $readme
    echo "" >> $readme
    echo "in order to automatically resolve dependencies on your behalf " >> $readme
    echo "(note that you will need administrator privileges for this as this script will" >> $readme
    echo "download the necessary libraries for your platform). " >> $readme
    echo "" >> $readme
    echo "Should you wish to contact me for whatever reason, please do so via:" >> $readme
    echo "" >> $readme
    echo "                 <http://www.goblincoding.com/contact>" >> $readme
    echo "" >> $readme
    echo "================================================================================" >> $readme
    
    echo "Creating tarball..."
    tar -zcvf $tardir".tar" $tardir
    
    echo "Cleaning up..."
    rm -rf $tardir
    echo "Done!"
    

    展开全文
  • linux qt 程序打包发布 1.linuxdeployqt 安装 最简单的方法直接下载编译好的 linuxdeployqt-x86_64.AppImage文件,将其改名字为linuxdeployqt,并chmod a+x,然后复制到 /usr/local/bin/。然后命令行输入 ...

    linux qt 程序打包发布

    1.linuxdeployqt 安装

    最简单的方法直接下载编译好的 linuxdeployqt-x86_64.AppImage文件,将其改名字为linuxdeployqt,并chmod a+x,然后复制到 /usr/local/bin/。然后命令行输入 linuxdelpoyqt –version,输出linuxdeployqt 版本就安装成功。
    linuxdeployqt-x86_64.AppImage 下载地址,https://github.com/probonopd/linuxdeployqt/releases
    这里写图片描述
    点击linuxdeployqt-x86_64.AppImage右键下载即可。

    $ mv linuxdeployqt-x86_64.AppImage linuxdeployqt
    $ mv ./linuxdeployqt /usr/local/bin
    $ linuxdelpoyqt --version
    linuxdeployqt 4 (commit 988d294), build 481 built on 2018-02-02 15:05:23 UTC

    2.打包自己的程序

    将自己的qt程序(如myQtApp)复制到一个目录(如 qtTest),运行
    
     $ linuxdeployqt ./myQtApp -appimage

    3.在ubuntu 中添加qt 应用程序图标

    修改qt 目录下的desktop 文件。可以按照ubuntu 官方提示修改。
    ubuntu desktop文件使用

    #-- 全局安装(所有用户可用),将xxx.desktop 复制到/usr/share/applications  
    #-- 当前用户可用, 将xxx.desktop 复制到 ~/.local/share/applications 目录即可
    #--appName.desktop
    [Desktop Entry]
    Version=1.0 #app的版本
    Name=myQtApp #app的名字
    Comment= this app use for xxx #说明信息 
    Exec=/path/to/your/QtApp/myQtApp #app的执行路径,绝对路径
    Icon=/path/to/your/app_icon/myQtApp.png #icon 路径,绝对路径
    Terminal=false #是否在终端启动,效果自己试一下就知道了
    Type=Application
    Categories=Utility;Application;

    4、关于qt.conf

    这个文件指定了qt 程序的运行环境。
    引用qt说明的原话:
    The qt.conf file can be used to override the hard-coded paths that are compiled into the Qt library. These paths are accessible using the QLibraryInfo class. Without qt.conf, the functions in QLibraryInfo return these hard-coded paths; otherwise they return the paths as specified in qt.conf.
    即我们可以使用qt.conf 指定qt程序的运行路径和库路径。
    The file should have a Paths group which contains the entries that correspond to each value of the QLibraryInfo::LibraryLocation enum. See the QLibraryInfo documentation for details on the meaning of the various locations.
    这个文件应该要包含QLibraryInfo::LibraryLocation enum,如以下内容

    EntryDefault Value
    Prefix程序运行的路径,一下所有的路劲都是相对于这个路径
    Libraries程序的库库路劲,linuxdeployqt会自动再这个目录生成./lib,并将需要的库拷贝过来

    主要有这几个,多余的可以上qt帮助文档

    # Generated by linuxdeployqt
    # https://github.com/probonopd/linuxdeployqt/
    [Paths]
    Prefix = ./         #程序的运行路劲
    Libraries =  ./lib  #程序的库路径
    Plugins = ./plugins #插件路径

    参考:http://doc.qt.io/qt-5/qt-conf.html

    5.补充

    虽然linuxdepoyqt可以帮我们解决多数情况下库的依赖问题,但是也有的时候不能完整解决。这个时候就需要我们自己复制所依赖的库。
    提供一个脚本,复制依赖库,复制以下代码,将其保存成为 copylib.sh

    #!/bin/sh
    bin=$1         #发布的程序名称  
    
    desDir="./lib" #你的路径  
    
    if [ ! -d $desDir ];then
          #echo "makedir $desDir"
          mkdir $desDir
    fi 
    libList=$(ldd $bin | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')
    cp $libList $desDir

    命令行 运行

    chmod a+x ./copylib.sh
    ./copylib.sh ./myapp

    就可以复制所需要的库到当前目录下的 ./lib 文件夹中
    通常情况下,结合linuxdelpoy 和 copylib.sh 可以解决Linux 下 qt 程序的库依赖问题

    展开全文
  • Linux Qt程序打包发布

    千次阅读 2021-11-30 18:03:07
    用的国产Linux系统,系统自带Qt4的库,开发用的Qt5.14,在不影响原有Qt4的库的前提打包发布,整了好长一段时间,记录一下 PS:我这国产Linux下WPS用的Qt4的库,不能影响其他软件正常使用 一、Pro文件 硬编码可...

    前言

    用的国产Linux系统,系统自带Qt4的库,开发用的Qt5.14,在不影响原有Qt4的库的前提下,打包发布,整了好长一段时间,记录一下
    PS:我这国产Linux下WPS用的Qt4的库,不能影响其他软件正常使用


    一、Pro文件

    硬编码可执行文件库的搜索路径,qt.pro添加如下:

    unix:!macx: LIBS += -L./QtLib
    QMAKE_LFLAGS += -Wl,-rpath=./QtLib
    

    二、qt.conf文件

    1.qt工程

    创建并添加qt.conf文件
    在这里插入图片描述

    [Paths]
    Prefix=./QtLib
    Plugins=plugins
    Libraries=lib
    

    2.打包

    打包时需要将qt.conf文件放到执行文件目录下,打包需要依赖qt库命令如下:

    ldd 程序名 | grep -i qt
    

    相关库存放路径如下:
    在这里插入图片描述
    QtLib目录结构如下:
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    20220105补充
    Linux下Qt应用程序无法输入中文,需要添加插件库libfcitxplatforminputcontextplugin.so(系统自带或者sudo apt-get install fcitx-libs-qt5 下载),如下图所示,同时qt安装目录下也需要该库,并且增加执行权限
    在这里插入图片描述

    20220329继续补充
    qt打包对应安装目录,需要那个目录下的so,conf就添加对应的项,对应表格如下

    EntryDefault Value
    PrefixQCoreApplication::applicationDirPath()
    Documentationdoc
    Headersinclude
    Librarieslib
    LibraryExecutableslibexec
    Binariesbin
    Pluginsplugins
    Importsimports
    Qml2Importsqml
    ArchData.
    Data.
    Translationstranslations
    Examplesexamples
    Teststests
    Settings.

    3.配置动态库加载路径

    配置的是其他依赖库的加载路径,不是qt的,手动添加如下:

    pwd (回车拷贝)
    sudo vim /etc/ld.so.conf (末尾粘贴)
    sudo ldconfig
    

    install.sh脚本添加如下,需要sudo运行:

    ConfPwd="/etc/ld.so.conf"
    AppPwd=$PWD
    grep -w $AppPwd $ConfPwd && echo "pwd exist!"||echo $AppPwd >> $ConfPwd
    sudo ldconfig
    
    展开全文
  • linux下QT5 程序打包工具,打包完成后是一个单独可运行文件,就像windowexe文件一样双击可运行,可以脱离QT环境。主要是github下载操蛋,下载下来供各位朋友使用。
  • 前言:最近因项目需求,需要打包linux-qt程序给客户先用一子。百度一大堆终于找了几个靠谱的来综合一下,留为备用吧。由于是先遣版所以仅制作为免安装程序的格式。正文:博主的qt是5.9.2的,程序名称为ocs,下面...
  • Linux下Qt程序打包发布

    2019-02-21 22:37:44
    相关Blog: ...   Qt程序打包过程: 1)以release版本编译 2)将需要的动态链接库拷贝到应用程序目录 其他: QCoreApplication::addLibraryPath("./lib");//由启发性的函数...
  • Linux 下Qt应用程序打包发布方法及踩过的坑
  • linux下Qt程序打包发布教程,包括包的安装卸载等操作
  • linux qt 程序打包发布 1.linuxdeployqt 安装 最简单的方法直接下载编译好的 linuxdeployqt-x86_64.AppImage文件,将其改名字为linuxdeployqt,并chmod a+x,然后复制到 /usr/local/bin/。然后命令行输入 ...
  • Linux下Qt程序打包发布并设置图标

    千次阅读 2019-10-12 23:59:32
    之前整理过一篇文章是关于Windows下Qt打包发布与设置环境变量的,那篇文章里面Qt发布程序是没有设置应用程序图标的,之后会再整理一篇文章的,顺便测试使用Qt插件在...
  • 本次测试为在ubuntu打包程序为deb文件包,然后再Ubuntu和银河麒麟安装测试,均可使用 1、Qt下Release模式编译工程文件,文件名为wapp 2、创建如下基本目录结构 本目录结构在~目录创建 wapp DEBIAN // 存放...
  • Linux下QT程序打包

    千次阅读 2020-11-13 15:25:23
    一、准备两个脚本 ldd.sh脚本 #!/bin/bash LibDir=$PWD"/lib" Target=$1 lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*")) ...注意该脚本的名称必须和程序名一致。 #!/bin/sh a
  • 一般程序在ubuntu或Centos开发完成后,需要发布给配置人员使用,往往需要把该程序的运行环境移植到配置人员使用的环境中,这就需要对开发编译后的可执行程序进行包装,让它可以在其他机器中正常运行。简单点就是...
  • Linux系统实现QT程序打包发布

    千次阅读 2020-03-09 21:20:39
    1. 先使用Release编译QT程序 2. 程序编译成功后,会在指定目录生成一个文件夹,里面就包含了可执行程序。 比如:build-ffmpeg_code-Desktop_Qt_5_12_6_GCC_64bit-Release 3. 在这个(build-ffm...
  • Linux系统中打包发布Qt程序

    千次阅读 2019-01-22 11:17:51
    Qt应用程序在windows有一个自带的小程序(windeployqt)可以用来打包Linux系统可以手写一个脚本文件,充分利用ldd命令进行打包。 实现 废话不说,步骤如下: QtCreator使用Release版本进行编译,并将编译后...
  • qt程序linux下发布

    2017-08-21 14:32:14
    qt程序linux下发布,特别是QT5的程序发布,解决这个错误,Failed to load platform plugin “xcb”. Available platforms are: Aborted(core dumped)
  • qt程序打包发布.txt

    2019-05-14 09:01:19
    QT程序Linux下打包发布操作,文档里面附有脚本程序。
  • 第一次用QT开发程序打包发布到任意Linux系统上,期间踩了很多坑,最后目标达成,付出艰辛之后取得的成绩才更可贵啊,现将过程及问题总结一下,希望有相同需求的朋友少走点弯路。 网上有很多Linux下QT打包发布的...
  • Linux下QT程序打包发布

    千次阅读 2018-03-21 10:22:06
    程序以test为例:1. QtCreate使用Release版本编译2. 从可运行程序的文件中拿出可执行文件,例:test3. 终端使用ldd命令查看需要的连接库,例:ldd test4.... #发布程序名称 des="/home/flyer/...
  • LinuxQt打包发布

    2021-11-07 10:28:25
    linuxdeployqt简介 linuxdeployqt 是Linux下的qt打包工具,可以将应用程序使用的...参考【fengMisaka】的博文:在Linux下使用linuxdeployqt发布Qt程序 - fengMisaka - 博客园 https://www.cnblogs.com/linuxAndMcu/p/
  • release要发布程序b) 通过`windeployqt`打包3)方法二 — 发布成独立的可执行exe文件a) 下载工具b) 打包4)方法三 — 打包成安装包发布a)通过Inno Setup工具打包b)通过Advanced Installer工具打包3.Linux下的...
  • 基于linuxdeployqt打包发布Qt工程
  • Qt程序打包发布

    2018-06-17 11:34:23
    QtCreater工具Linux开发的程序发布相比于Windows下发布较麻烦,该手册经过实践的证明,供大家参考。
  • 亲测可用。像windows下打包qt程序一样方便。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,940
精华内容 3,176
关键字:

linux下qt程序打包发布