zoukankan      html  css  js  c++  java
  • qt linux 打包

    本文在银河麒麟上成功运行,程序类型: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=$1
    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 $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 "$@"

    这个脚本用来拉起和它名字一样的可执行文件。为什么不直接拉可执行文件呢?因为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问题,目前还没解决,毕竟没有这样的项目,先不管

  • 相关阅读:
    mass Framework draggable插件
    将一段数字从右到左每隔三位插入一个逗号
    Firefox 12正式发布
    各大瀑布流简析与建议
    判定是否为非负整数
    mass Framework droppable插件
    HTML 5 <video> 标签
    SQL DELETE 语句
    SQL CREATE TABLE 语句(转)
    HTML <fieldset> 标签
  • 原文地址:https://www.cnblogs.com/judes/p/11943203.html
Copyright © 2011-2022 走看看