【linux】【qt5】【将linux下的qt程序打包发布(完全适用于中标麒麟)】

摘要:
由于是先遣版所以仅制作为免安装程序的格式。并将lib文件删除。即将OCS/platforms/lib/*拷贝到OCS下。并删除OCS/platforms/lib文件夹及其所属文件。查找platforms文件方法:find/-name"platforms".拷贝文件夹:cp-Rxx/xxxxx/无视名称移动文件:mv-fxx/xx/xx/后记:linux下免安装打包就到这里了,遇到问题欢迎留言哦。

前言:

最近因项目需求,需要打包linux-qt程序给客户先用一下子。百度一大堆终于找了几个靠谱的来综合一下,留为备用吧。

由于是先遣版所以仅制作为免安装程序的格式

正文:

博主的qt是5.9.2的,程序名称为ocs,下面看到这个名称替换成自己的就是了。

1.先找个地方,比如桌面创建一个名字为OCS的空文件夹用于放打包后的文件。

2.将项目使用Release模式编译并运行一遍(确保生成可执行程序ocs)。

3.打开程序输出目录(生成的那个可执行程序ocs的目录)。

博主的目录是build-ocs-Desktop-Release。

4.在上一部的目录中新建脚本copylib.sh。

5.在copylib.sh中加入一下内容,并通过指令赋值权限sudo chmod 777 copylib.sh。

1 #!/bin/bash
2 
3 LibDir=$PWD"/lib"
4 Target=$1
5 
6 lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))
7 
8 $(mkdir $LibDir)
9 
10 for Variable in${lib_array[@]}
11 do
12     cp "$Variable"$LibDir
13 done

6.打开终端并进入当前文件夹,输入./copylib.sh ocs.

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

7.运行完上述指令后,会在同目录下生成lib文件夹。

8.将ocs的可执行程序和上一步lib里面的文件全部复制到OCS文件夹中。并将lib文件删除。

9.进入qt的安装目录,找到platforms目录,博主的目录是:

/usr/lib64/qt5/plugins/platforms

10.将第5步的copy.sh放到platforms目录中,并运行./copylib.sh libqxcb.so,这时也会得到一个lib文件加-libqxcb.so的库文件夹。

注:xcb是移植的重要文件,如果拷贝错误将不能在目标主机运行。

11.将platforms文件夹整个拷贝到OCS,并删除原先文件夹中的libxcb.so库文件夹。

12.将拷贝后的库文件夹的东西全部放到OCS目录下。即将OCS/platforms/lib/* 拷贝到OCS下。并删除OCS/platforms/lib文件夹及其所属文件。

13.在OCS文件夹中新建脚本ocs.sh,添加下面内容后赋值赋值权限。chmod 777 ocs.sh 。

1 #!/bin/sh
2 appname=`basename $0 |sed s,.sh$,,`
3 
4 dirname=`dirname $0`
5 tmp="${dirname#?}"
6 
7 if [ "${dirname%$tmp}" != "/"]; then
8 dirname=$PWD/$dirname
9 fi
10 LD_LIBRARY_PATH=$dirname
11 export LD_LIBRARY_PATH
12 $dirname/$appname "$@"

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


注,

  1. 全程对库文件夹的拷贝都是拷贝文件夹里面的内容,而不需要带lib目录。我们的层次结构OCS/platforms/,没有其他。
  2. 查找platforms文件方法:find / -name "platforms".
  3. 拷贝文件夹:cp -R xx/xx xxx/
  4. 无视名称移动文件:mv -f xx/xx/xx/

后记:

linux下免安装打包就到这里了,遇到问题欢迎留言哦。

免责声明:文章转载自《【linux】【qt5】【将linux下的qt程序打包发布(完全适用于中标麒麟)】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java实体类自动生成serialVersionUID的方法深度相机原理揭秘--双目立体视觉下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux部署Tomcat、JDK、MySQL(详细步骤)

一、Tomcat安装 1.将tomcat安装包apache-tomcat-7.0.57-windows-x64.zip在本地解压后放到/usr/local目录 2.修改解压后的目录的权限 [root@localhost local]# chmod -cfvR 777 apache-tomcat-7.0.57/ 3.修改环境变量: [root@localho...

FFmpeg解码H264及swscale缩放详解

原文  http://blog.csdn.net/gubenpeiyuan/article/details/19548019 主题 FFmpeg 本文概要:         本文介绍著名开源音视频编解码库ffmpeg如何解码h264码流,比较详细阐述了其h264码流输入过程,解码原理,解码过程。同时,大部分应用环境下,以原始码流视频大小展示并不是...

Linux 下svn恢复到某一版本

经常由于坑爹的需求,功能要切回到之前的某一个版本。有两种方法可以实现: 方法1: 用svn merge 1) 先 svn up,保证更新到最新的版本,如20; 2) 然后用 svn log ,查看历史修改,找出要恢复的版本,如10 。如果想要更详细的了解情况,可以使用svndiff -r 10:20 [文件或目录]; 3) 回滚到版本号10:svnmer...

linux命令alias永久配置

需求:清屏的指令是:clear,感觉用着不爽,写这个命令太慢,想自定义命令:cls 解决:命令别名指令:alias 1:查看当前系统中有哪些别名:命令行输入:alias 2:添加我们自己的别名:alias cls='clear'  回车就完成了 问题: 这样的配置在重启linux后失效,怎么才能永久保持呢? 解决: 1:cd ~进入用户home目录 2:下...

Linux下多线程查看工具(pstree、ps、pstack)

1. pstree pstree以树结构显示进程 $ pstree -p work | grep ad sshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552)                                                 |-{ad_...

Linux系统重启network服务失败

  问题描述使用KVM通过修改配置文件配置好网卡IP,使用命令行service network restart 重启网络服务失败。 如图: 使用图形化管理工具配置IP,在系统界面右上角可以看到网卡状态为未连接,配置好IP以后使用service network restart命令时报同样的错。 如图: 告警信息使用ping命令查看路由是否通畅,系统提...