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

    [https://blog.csdn.net/u014746574/article/details/79288727] 原文基础补充修改而来

    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),运行

    注:在默认qt输出路径执行似乎有问题,最好先拷贝一下

     $ linuxdeployqt ./myQtApp -appimage

    遇到报错

    ubuser@ubuntu:~/Desktop/myzr/build-cangaroo-Desktop_Qt_5_12_8_GCC_64bit-Release/bin$ linuxdeployqt ./cangaroo -appimage
    linuxdeployqt 6 (commit d41e234), build 724 built on 2020-07-31 15:51:47 UTC
    FHS-like mode with PREFIX, fhsPrefix: "/home/ubuser/Desktop/myzr/build-cangaroo-Desktop_Qt_5_12_8_GCC_64bit-Release"
    app-binary: "/home/ubuser/Desktop/myzr/build-cangaroo-Desktop_Qt_5_12_8_GCC_64bit-Release/bin/cangaroo"
    appDirPath: "/home/ubuser/Desktop/myzr"
    relativeBinPath: "build-cangaroo-Desktop_Qt_5_12_8_GCC_64bit-Release/bin/cangaroo"
    ERROR: "/usr/bin/qmake -query" exited with 1 : "qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory\n"
    ERROR: Qt path could not be determined from qmake on the $PATH
    ERROR: Make sure you have the correct Qt on your $PATH
    ERROR: You can check this with qmake -v
    

     这是因为默认的qt路径和qmake的版本不对,(我的电脑默认装了qt4,我的应用程序是qt5编译的)

    需要修改qt版本:

    sudo gedit /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf

     原来是:

    /usr/lib/x86_64-linux-gnu/qt/bin
    /usr/lib/x86_64-linux-gnu/

    修改为用的qt版本路径: 

    /home/ubuser/Qt5.12.8/5.12.8/gcc_64/bin
    /usr/lib/x86_64-linux-gnu/

    可以通过 qmake -version确认版本是否正确切换

    $ qmake -version
    QMake version 3.0
    Using Qt version 5.5.1 in /usr/lib/x86_64-linux-gnu
    

    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程序要稍稍复杂一点,一般有两种方式: 1.打包成二进制文件,2.打包成安装包形式 具体步骤如下: 1.将工程改成Release模式编译运行 2.打开编译输出的文件夹,(带二进制的可执行文件那个)。在...

    window系统打包QT方法很多,用官方提供的windeployqt工具就可以,不过对应的版本要对。

    linux 系统打包QT程序要稍稍复杂一点,一般有两种方式:

    1.打包成二进制文件,2.打包成安装包形式

    具体步骤如下:

    1.将工程改成Release模式编译运行

    2.打开编译输出的文件夹,(带二进制的可执行文件那个)。在这个新建的文件夹中新建一个脚本文件install.sh,用命令chmod 777 install.sh修改文件权限,然后向脚本中写入以下内容

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

    3.切换到当前文件夹,运行./install.sh uidemo01,(uidemo01是上一步编译输出的二进制可执行文件),运行完上述指令后,同目录下会生成lib文件夹,

    4.在桌面或其他合适的地方创建一个文件夹如app把上一步编译输出的二进制可执行文件和ib文件夹里生成的库文件全部复制过来,不用复制lib文件夹

    5.进入QT的安装目录,找到platforms文件夹,如:/usr/lib/arm-linux-gnueabihf/qt5/plugins/platforms,将整个platforms文件夹复制到app文件夹中

    6.将上文的install.sh文件放到app/platfroms中,然后切换到当前文件夹路径,运行./install.sh libqxcb.so,这时会生成一个新的lib文件夹(即libqxcb.so的库文件)。

    7.将运行生成的lib文件夹里libqxcb.so的库文件全部复制到app文件夹里去,然后可以删除app/platfroms/lib文件夹

    8.在app文件夹里新建脚本文件uidemo01.sh,执行命令chmod 777 uidemo01.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 "$@"
    

    9.这时把整个app文件夹复制到别的电脑上,运行./uidemo01.sh脚本,就可以启动程序了

    这是就基本完成了打包成二进制文件,下面继续可以打包成可安装程序

    10.将二进制文件uidemo01和资源文件复制到app文件夹中,然后在APP文件夹中新建uidemo01.desktop文件,并写入以下内容

    [Desktop Entry]
    Type=Application
    Name=测水仪
    Exec=/home/pi/Desktop/app/uidemo01.sh
    Icon=/home/pi/Desktop/app/image/5.png
    Encoding=UTF-8
    Version=1.0

     其中Exec路劲和Icon图标路径根据实际情况进行修改

    11.在app文件夹下新建setup脚本文件用于安装,并写入以下内容

    !/bin/bash
    #start pi spi
    pwds=/boot/config.txt
    sudo sed -i 's/dtparam=spi=off//g' $pwds
    sudo sed -i 's/dtparam=spi=on//g' $pwds
    sudo sed -i '$a dtparam=spi=on' $pwds
    CurDir=$PWD"/uidemo01.desktop"
    ExecDir=$PWD"/uidemo01.sh"
    IconDir=$PWD"/image/5.png"
    sudo sed -i "4c Exec=$ExecDir" $CurDir
    sudo sed -i "5c Icon=$IconDir" $CurDir
    sudo cp $CurDir /usr/share/applications/uidemo01.desktop
    cp $CurDir /home/pi/Desktop/uidemo01.desktop
    

    其中,CurDir和ExecDir,IconDir 根据实际情况进行修改。

    12.运行./setup 文件,就可以生成桌面快捷方式,这时就完成了QT安装程序的打包,亲测可用。

    若有提示错误请检查库文件是否齐全或者是文件权限是否修改

    参考:https://blog.csdn.net/weixin_43219970/article/details/87269166

                https://blog.csdn.net/z3512498/article/details/64922180

    展开全文
  • LinuxQT程序打包发布

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

    程序以test为例:

    1. QtCreate使用Release版本编译

    2. 从可运行程序的文件中拿出可执行文件,例:test

    3. 终端下使用ldd命令查看需要的连接库,例:ldd test

    4. 把ldd查询到的所有需要的库导出

    这里提供一个脚本loadlib.sh 将ldd打印出来的依赖库复制到指定路径:

    #!/bin/sh 
    exe="test" #发布的程序名称 
    des="/home/flyer/QtProject/build-test-Desktop-Release/ReleaseTest" #执行文件的路径 
    deplist=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }') 
    cp $deplist $des  

    说明:exe :要发布的程序名称 des:指定so库文件复制的路径 


    5. 编写.sh文档 并将它放在与步骤4同一目录下(.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 "$@"  


    6. 执行这个.sh文件:

    需更给这两新编写的sh文件添加改权限:

    chmod +x loadlib.sh

    chmod +x test.sh

    执行sh

    ./loadlib.sh

    ./test.sh

    Ok!大功告成,将这个文件复制到其他电脑上就可以运行了。

    展开全文
  • LinuxQt程序打包发布

    2019-02-21 22:37:44
    相关Blog: ...   Qt程序打包过程: 1)以release版本编译 2)将需要的动态链接库拷贝到应用程序目录下 其他: QCoreApplication::addLibraryPath("./lib");//由启发性的函数...

     

    相关Blog:

    https://blog.csdn.net/WMX843230304WMX/article/details/78748835

     

    Qt程序打包过程:
    1)以release版本编译
    2)将需要的动态链接库拷贝到应用程序目录下

    其他:
    QCoreApplication::addLibraryPath("./lib");//由启发性的函数

    展开全文
  • linux qt 程序打包发布 1.linuxdeployqt 安装 最简单的方法直接下载编译好的 linuxdeployqt-x86_64.AppImage文件,将其改名字为linuxdeployqt,并chmod a+x,然后复制到 /usr/local/bin/。然后命令行输入 ...
  • 一,如何打包发布 一般程序在ubuntu或Centos下开发完成后,需要发布给配置人员使用,往往需要把该程序的运行环境移植到配置人员使用的环境中,这就需要对开发编译后的可执行程序进行包装,让它可以在其他机器中...
  • 之前整理过一篇文章是关于Windows下Qt打包发布与设置环境变量的,那篇文章里面Qt发布的程序是没有设置应用程序图标的,之后会再整理一篇文章的,顺便测试下使用Qt插件在...
  • LinuxQT程序打包

    2017-07-12 17:16:04
    Linux系统下编写的QT程序,可以运行在无QT安装包的电脑上!
  • 目录Linux下的QT程序打包,发布流程Ⅰ. 打包流程1.编译2....问题描述:QT下运行的程序需要安装QT环境,为了让程序离开QT环境依旧可以照常运行,所以需要将程序打包发布。 Ⅰ. 打包流程 1.编译 使用
  • LinuxQT程序打包

    2019-08-13 09:05:16
    本次,笔者采用linuxqt+appimage 进行打包,这样的好处不言而喻,打包后生成的是Image,这意味着对部署环境没有依赖,不需要安装配置库文件,只要打包没问题,在别的应用环境中是很好部署的。 一、环境搭建: 准备...
  • linuxQT5 程序打包工具,打包完成后是一个单独可运行文件,就像window下exe文件一样双击可运行,可以脱离QT环境。主要是github下载操蛋,下载下来供各位朋友使用。
  • LinuxQT程序打包

    2020-09-05 15:22:31
    目的:将Linux下自己写好的程序进行发布或者拷贝到其他电脑上运行。 工具:patchelf cmake linuxdeploy 安装patchelf软件 sudo apt install patchelf 安装cmake软件 sudo apt install cmake 编译QT环境...
  • LinuxQt程序打包发布

    千次阅读 2018-07-11 14:53:59
    转载地址–LinuxQt程序打包发布 以下是转载内容—>程序以test为例:QtCreate使用Release版本编译从可运行程序的文件中拿出可执行文件,例:test终端下使用ldd命令查看需要的连接库,例:ldd test(补充,...
  • 理论上来说,每一个程序都有自己的运行环境;所以,当程序完成后进行发布,应该提供发布包。 在Windows上,具有打包工具;典型的打包工具如Advanced Installer。这些打包工具本身上就是把程序和其依赖库选择到相应...
  • 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-...
  • qt程序打包发布.txt

    2019-05-14 09:01:19
    QT程序Linux下的打包发布操作,文档里面附有脚本程序。
  • Qt程序打包发布

    2018-06-17 11:34:23
    QtCreater工具Linux开发的程序发布相比于Windows下发布较麻烦,该手册经过实践的证明,供大家参考。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,906
精华内容 2,762
关键字:

linux环境qt程序打包发布

linux 订阅