本文在银河麒麟上成功运行,程序类型:Qt控制台,使用到的Qt外库:mysql数据库

1、环境一共有两台,1是编译机【装有Qt、数据库】,2是运行机【纯净机】

2、在编译机上安装Qt、mysql,我这里的Qt使用的是Qt5.6.1,mysql是5.7.28

3、解决Qt不能连接数据库问题

写一个访问Mysql的demo,运行打印Driver not loaded【如果没有报驱动问题,就跳过此步】

进入:/home/rainbow/zhuxy/app/Qt5.6.1/5.6/gcc_64/plugins/sqldrivers

执行:ldd libqsqlmysql.so

显示有三个so not found,在网上找到

放在下图路径下:

在运行demo,应该不会报驱动的问题了,如果还有就上网上解决办法,这一步就是用来解决当前编译机能正常访问mysql

4、将demo编译成release可执行文件,名字是test

5、新建空文件夹,将可执行文件放进去;新建两个脚本findso.sh,test.sh【和可执行文件名字一样】

6、findso.sh

#!/bin/bash
LibDir=$PWD"/lib"
Target=$
lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))
$(mkdir $LibDir)
for Variable in ${lib_array[@]}
do
cp "$Variable" $LibDir
done

原理是再当前路径新建lib文件夹,再将指定文件所依赖的so赋值到此文件夹中

7、test.sh

#!/bin/sh
appname=`basename $ | sed s,\.sh$,,`
dirname=`dirname $`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"

这个脚本用来拉起和它名字一样的可执行文件。为什么不直接拉可执行文件呢?因为linux寻找so的路径没有包含当前路径,而我们已经将依赖的so放在当前路径了,所以需要让linux首先在当前路径找so,

就是上面的:LD_LIBRARY_PATH=$dirname  export LD_LIBRARY_PATH

8、找所有的so

在文件夹中打来终端,执行:findso.sh test,执行完毕会在当前路径生成lib文件夹,将lib文件夹的所有so移动到当前文件夹并删除lib

9、将Qt自己的sqldriver文件夹赋值到当前文件夹

路径:/home/rainbow/zhuxy/app/Qt5.6.1/5.6/gcc_64/plugins/sqldrivers

10、将3中的so赋值到当前文件夹

最终样子,红色的是手动加的,其他的是findso脚本找到的。

11、将文件夹复制到目标机,执行./test.sh拉起软件

不出意外就能拉起

ps

1、如果拉起还是发现有问题,首先看什么so没有找到,ldd test。也可以添加拉软件的打印信息:export QT_DEBUG_PLUGINS=1,然后再拉软件,就能看到找依赖so的过程

2、目前发现控制台软件很好打包,但是带有widget的软件一直报xcb问题,目前还没解决,毕竟没有这样的项目,先不管

qt linux 打包的更多相关文章

  1. Linux 打包QT程序到未安装QT的其他Linux主机下运行

    昨天终于改好了一个开源但是用起来有问题的串口调试助手,想把它打包一下以后在其他电脑上也可以用. 找了网上的一个教程打包后,在本机上可以正常使用,但是移植到另一台上就出现缺少xcb的提示. 上网搜资料倒 ...

  2. QT程序打包发布

    本来感觉这是一个简单的操作,今天看见群里有人在问这个问题,他说网上查了很多都不成功,突然就想把自己初学的时候记录一下! 题目谢了QT程序的打包发布,那就是两步骤:打包+发布! 注释:这篇博文用的是Qt ...

  3. Qt 程序打包发布总结

    1.  概述 当我们用QT写好了一个软件,要把你的程序分享出去的时候,不可能把编译的目录拷贝给别人去运行.编译好的程序应该是一个主程序,加一些资源文件,再加一些动态链接库,高大上一些的还可以做一个安装 ...

  4. 【win】【qt5打包】【qt程序打包成一个可执行文件(带图标任何win都可以运行哦)】

    [前言] 业务需求将qt程序打包成win可执行文件.咱是做linux的,奈何用的麒麟系统,程序运行在win,好嘛,重新在win qtcreator编译后打包呗. [目标] 1.给qt程序添加一个图标. ...

  5. Qt之打包发布(NSIS详解)

    来源:http://blog.sina.com.cn/s/blog_a6fb6cc90101fer8.html 发布方式    Qt发布的时候,通常使用两种方式:   (1)静态编译  (2)动态编译 ...

  6. ubuntu 环境下的QT程序打包

    很多的时候 需要将自己写的QT 程序发布一下  所以今天教一下 怎么在ubuntu 环境下将自己的写的Qt 程序打包打包是为了不依赖 开发环境 和开发的库. 1. QtCreate使用Release版 ...

  7. Qt程序打包,自动拷贝依赖文件

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt程序打包,自动拷贝依赖文件     本文地址:http://techieliang.com ...

  8. Qt开发北斗定位系统融合百度地图API及Qt程序打包发布

    Qt开发北斗定位系统融合百度地图API及Qt程序打包发布 1.上位机介绍 最近有个接了一个小型项目,内容很简单,就是解析北斗GPS的串口数据然后输出经纬度,但接过来觉得太简单,就发挥了主观能动性,增加 ...

  9. Qt程序打包发布方法(使用官方提供的windeployqt工具)

    Qt程序打包发布方法(使用官方提供的windeployqt工具) 转自:http://tieba.baidu.com/p/3730103947?qq-pf-to=pcqq.group Qt 官方开发环 ...

随机推荐

  1. VS创建C工程

    打开VS编辑器: 填写项目名称,控制项目位置,创建: 在源文件中添加新项: 填写文件名称,修改后缀: 编写一个简单的hello word编译看看windows环境支持如何:

  2. sublime设置代码缩进

    打开sublime的首选项(Preferences)下的设置-用户(Setting-User) ,配置如下代码 , "translate_tabs_to_spaces": true ...

  3. cmds系统数据库源端大表数据更新优化

    cmds系统数据库源端大表数据更新优化 以下脚本可以用于将表按照rowid范围分区,获得指定数目的rowid Extent区间(Group sets of rows in the table into ...

  4. Spark常规性能调优

    1.1.1     常规性能调优一:最优资源配置 Spark性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行 ...

  5. 正则,js函数math()提取混乱字符串中多个字符串内容

    var a='start111111endstart222222endasdfasdfasdfakjsfhaksdf'+ 'start333333endstart444444end6666666666 ...

  6. 在IAR平台建立STC8ASK64S4A12单片机工程

    转载:http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=168481&page=1#pid737250  一般我们使用STC单 ...

  7. mysql 执行存储过程报错Prepared statement needs to be re-prepared

    今日思语:不喜欢再见 说再见,因为有时明知道下一次再见已是遥遥无期或是不再见 错误如下: ERROR 1615 (HY000) at line 406 in file: 'update-mysql.s ...

  8. JSON Web Token (JWT) - Introduction

    To validate the challenge, connect as admin.------------以admin登陆 https://jwt.io/introduction/        ...

  9. Ubuntu 下安装 Qt Designer

    1. apt-get install qt5-designer 2.终端下输入designer,显示: designer: could not exec '/usr/lib/x86_64-linux- ...

  10. 【数论】[素数筛,phi]P3601签到题

    题目描述 给出l,r,要求求出\(\sum_{i = l}^r (i - phi[i]) mod 666623333\) \(1\leq l\leq r\leq 10^{12}\),\(r - l \ ...