首页 > 系统相关 >linux下对qt编写的程序进行部署

linux下对qt编写的程序进行部署

时间:2022-12-25 13:03:08浏览次数:43  
标签:qt tar 路径 jpg linuxdeployqt file linux 编写


当我们完成程序设计之后,需要将可执行程序交付客户,而运行环境里面可能是没有相关支持库的,这个时候就涉及到部署的相关问题。对于我们在Linux下基于QT编写的图像处理程序,我们采用 linuxdeployqt  进行部署,以下是相关注意步骤。我成功的实现了GOQTTemplate在ubuntu16.04上编译,并且在ubuntu18.04上的运行:




linux下对qt编写的程序进行部署_linux


1.linuxdeployqt 安装


最简单的方法直接下载编译好的 linuxdeployqt-x86_64.AppImage文件( https://github.com/probonopd/linuxdeployqt/releases ),


将其改名字为linuxdeployqt,并chmod a+x,然后复制到 /usr/local/bin/。


命令行输入 linuxdelpoyqt –version,输出linuxdeployqt 版本就安装成功。


 


$ 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 官方提示修改。


 


#-- 全局安装(所有用户可用),将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,如以下内容


Entry Default 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 程序的库依赖问题


 


 


6. 注意事项


linux下安装Qt5.7后添加qmake环境变量后出现错误


执行


qmake -v


 


出现错误:qmake: could not exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake’: No such file or directory


分析:


qtchooser默认选择路径中没有指向qmake路径


解决方法:


cd /usr /lib /x86_64 -linux -gnu /qt -default /qtchooser
vim default.conf 


将第一行中的/usr/lib/x86_64-linux-gnu/qt4/bin/qmake


替代为qmake的路径(我的安装路径 /home/xuin/Qt5.7.0/5.7/gcc_64/bin)


 


压缩解压缩命令


 


tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成jpg.tar 


 


tar -czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz


 


 tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2


 


tar -cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z


 


rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux


 


zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux


 


解压


 


tar -xvf file.tar //解压 tar包


 


tar -xzvf file.tar.gz //解压tar.gz


 


tar -xjvf file.tar.bz2   //解压 tar.bz2


 


tar -xZvf file.tar.Z   //解压tar.Z


 


unrar e file.rar //解压rar


 


unzip file.zip //解压zip


 


标签:qt,tar,路径,jpg,linuxdeployqt,file,linux,编写
From: https://blog.51cto.com/jsxyhelu2017/5968102

相关文章

  • 安装GDB-ImageWatch ,在QT中查看图像
    GDB_ImageWatch是在Linux下基于QT编写图像处理程序的调试程序。由于并非像ImageWatch一样由官方提供,而是在github上以代码的方式进行提供,我们在使用的时候需要自己编......
  • 在Linux下OpenCV的下载和编译
    完整从代码编译OpenCV在很多情况下是必须的。总体上来看,都是下载、编译、配置这三个过程,其中一些细节值得注意,记录如下。这里以ubuntu为例,其他发行版可能略有不同。1......
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
    从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练1综述2环境架设3两个例子4程序框架5编译使用最新opencv6综合实验7拾遗一、PI的综述   树莓派(Raspber......
  • ffmpeg+libmp3lame库安装(linux)
    1.安装lame(libmp3fame的安装包)下载链接:https://sourceforge.net/projects/lame/files/lame/这里下载的文件版本为lame-3.100.tar.gz编译并安装tar-zxflame-3.100......
  • Linux进程信号
    写在前面下面我们来学习Linux中第三个模块,进程信号.今天我们将正式解释kill指令为何可以杀掉进程,这里存在很多小的知识点,信号在谈正式的内容之前,我们需要想一下我们之前......
  • 基础的基于QT的图像查看程序
    一、基本功能基于"混合UI"界面设计,以及QTreeWidget、QDockWidget使用(通过将一个QTreeWidget组件防止在QDockWidget区域上,并设置其可以在主窗体的左边或右边......
  • GOQTTemplate3的多线程化改造
      GOQTTemplate3作为一个QT+OpenCV的平台,希望能够为使用者提供基础的跨平台的图像处理框架。图像处理算法和GUI两个线程的隔离,是必然需要的。在之前的版本中,都采用了......
  • QTP调用自己开发的.net类库
    作者:天彤我现在用的是​​QTP​​9.2,这个版本提供了调用.net框架的功能,使用DotNetFactory对象就可以实现。QTP的帮助文档里面提供了一个例子: Setvar_Crea......
  • linux网络编程-线程——通过信号控制互斥锁
    1//由于pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a,所以在使用pthread_create创建线程时,在编译中要加-lpthread参数2//gccpthread_sig_mutex.c-......
  • linux 中实现批量讲指定的行替换为特定的数据
     001、sed实现[root@PC1test4]#lsa.txtcoordinate.txt[root@PC1test4]#cata.txt##测试数据ddffsd1ssaaee2xxvvzz3ssw......