银河麒麟踩坑笔记——打包QT程序

2023-05-16

背景:

出于项目需要,因为银河麒麟的环境配起来太繁琐太麻烦了,最近被要求在银河麒麟 v10系统+4000CPU环境下,将已经配好QT、达梦数据库环境的QT程序打包,为方便移植到其它的麒麟机子上使用。本来以为是很轻松的事,没想到在银河麒麟下遇到了各种问题,调了好几天才搞定。

当前系统环境:

麒麟v10 + 4000型号CPU + QT5.12 + 达梦8数据库 这些是已经配置好的环境

尝试的方法:

一、linxudeployqt第三方工具

        该方法网上有很多教程,感兴趣的可以尝试一下,例如:https://blog.csdn.net/zyhse/article/details/106381937

我一开始就是按照这个方法做的,不知道是因为我的机子环境配的不好还是什么问题,中途会遇到很多命令缺失的问题,一个个把命令安装好之后,最后一步打包时会报错Exec fomat什么的错误,网上也查不到,最终放弃

二、利用脚本文件打包

该方法大致参考https://www.cnblogs.com/pozhu15/p/12903672.html 但是最终会有链接不上数据库的报错,具体可以参照下面我的步骤解决该问题。

        1.在桌面新建package文件夹

        2.将QT项目以release版本运行,会在项目同级目录下生成一个文件夹,例如

build-xxxx-Desktop_Qt_5_12_8_MSVC2017_64bit-Release

        3.进入该文件夹,把其中的可执行文件复制到package文件夹内

        4.在package文件夹内,新建copylib.sh文件,并且升级权限

sudo chmod 777 copylib.sh

        5.在copylib.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

        6.保存后执行./copylib.sh giptables,这一步之后文件夹内会生成lib文件

        7.进入生成的lib文件夹,把其中所有文件都复制到package文件夹内

        8.进入QT安装目录,找到platforms文件夹,将该文件夹复制到package文件夹内

        9.将之前的copylib.sh复制到package的platforms文件夹内,执行./copylib.sh libqxcb.so,得到一个新的lib库文件夹

        10.将上一步新得到的文件夹内所有文件复制到package文件夹内,然后删除上一步生成的platforms下的lib文件夹

        11.在package文件夹内新建xxxx.sh脚本文件,xxxx为自己的项目名,然后赋权限

sudo chmod 777 xxxx.sh

        12.在xxxx.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=
export PATH=
export LD_LIBRARY_PATH
$dirname/$appname "$@"

注意:其中PATH和LD_LIBRARY_PATH的值自己填,根据QT中自己的环境信息进行修改,这也是数据库为什么会连接失败的原因。具体打开QT——项目——run——run environment中找自己的环境变量

        13.在package文件夹下执行./xxxx.sh即可运行,复制package文件夹到其他主机也可以运行,但是最后一步的PATH和LD_LIBRARY_PATH要根据不同主机进行修改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

银河麒麟踩坑笔记——打包QT程序 的相关文章

随机推荐

  • 使用指定的用户登录container

    root 64 hgdb01 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bf10ff6bcd03 oracle database 12 2 0 1 ee
  • WinServer 2012 R2 管理员密码丢失

    1 通过 PE 进入系统 xff0c 找到服务器的盘符 xff0c 这里可能在 xff24 盘 xff0c 找到路径 D Windows System32 osk exe 重命名 osk tmp exe cmd exe 重命名 osk ex
  • python web开发——Django基于类的视图

    简介 视图是一个可调用对象 xff0c 可以接收一个请求然后返回一个响应 这个可调用对象不仅仅限于函数 xff0c Django 同时提供一些可以用作视图的类 它们允许你结构化你的视图并且利用继承和混合重用代码 后面我们将介绍一些用于简单任
  • 使用 wkhtmltopdf python html转pdf

    使用 wkhtmltopdf python html转pdf 文章目录 使用 wkhtmltopdf python html转pdf前言一 环境二 安装与配置1 首先安装pdfkit0 612 python html转pdf3 url转pd
  • 项目场景:paddlepaddle FatalError Segmentation fault is detected by the operating system

    项目场景 xff1a paddlepaddle FatalError Segmentation fault is detected by the operating system paddlepaddle cpu运行infer py正常 g
  • nvidia-smi显示不全

    nvidia smi显示不全 文章目录 nvidia smi显示不全前言一 代码 总结 前言 使用nvidia smi查看显卡版本 显示不全 一 代码 使用 nvidia smi a 总结 提示 xff1a 这里对文章进行总结 xff1a
  • Android应用设置全屏的方法

    一般在设置Android应用全屏显示有三种方法 第一种是代码实现 protected void onCreate Bundle savedInstanceState super onCreate savedInstanceState 设置无
  • leetcode 45. 跳跃游戏 II 46. 全排列

    leetcode 45 跳跃游戏 II 46 全排列 45 跳跃游戏 II 难度中等1273收藏分享切换为英文接收动态反馈 给你一个非负整数数组 nums xff0c 你最初位于数组的第一个位置 数组中的每个元素代表你在该位置可以跳跃的最大
  • 使用《fabric》操作服务器

    使用 fabric 操作服务器 文章目录 使用 fabric 操作服务器1 安装2 使用 总结 1 安装 pip install fabric or easy install install fabric 2 使用 coding utf 8
  • jetson nano pytorch 环境配置

    jetson nano 开发环境配置 文章目录 jetson nano 开发环境配置一 增加交换空间大小交换空间的概念 1 检查系统的交换空间2 检查内存3 增加交换空间4 设置所有用户都可以读写 swapfile5 设置交换空间6 激活交
  • python pdf 转 图片、pdf 转 word、 word 转 pdf

    python pdf 转 图片 pdf 转 word word 转 pdf 文章目录 python pdf 转 图片 pdf 转 word word 转 pdf前言一 环境二 api文档三 使用1 pdf转图片2 pdf转word3 doc
  • uniapp h5+ 拍照、录音功能实现

    uniapp h5 43 拍照 录音功能实现 uniapp 功能实现 提示 xff1a 写完文章后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 uniapp h5 43 拍照 录音功能实现前言一 拍照1
  • windows 使用 nginx

    windows 使用 nginx 1 环境 nginx xff1a 1 23 1 nginx download 2 下载 下载并解压 windows nginx nginx download https nginx org en downl
  • python包上传到pypi过程

    python包上传到pypi过程 提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 python包上传到pypi过程前言一 pypi是什么 xff1f 二 使用步骤1 创建目录结
  • 使用 AT命令,4G拨号,python代码

    使用 AT命令 xff0c 4G拨号 xff0c python代码 文章目录 使用 AT命令 xff0c 4G拨号 xff0c python代码前置条件 一 打开AT环境二 测试三 python代码1 at py 用于发送指令 本文将介绍如
  • Xmanager使用的几个问题

    Xmanager使用的几个问题 2011 05 08 15 26 56 转载 标签 xff1a 杂谈 分类 xff1a 工作日记 通过xstart启动gnome桌面的具体调置 启动xstart xff0c 命名一个session xff0c
  • IDEA license server 激活

    2016 1 激活 http www iteblog com idea key php 2016 2 至今 激活 http idea iteblog com key php ideaIU 171 4249 21 可用
  • Rockchip Android平台查看系统运行帧率的方法

    Rockchip Android平台查看系统显示帧率的方法 在串口或者adb下输入如下命令 xff1a rk3588 s evb2 su rk3588 s evb2 setprop debug sf fps 1 rk3588 s evb2
  • webdriver的初步学习(IE,Chrome,Firefox)

    环境 xff1a Python3 5 Windows7 64bit IE11 Firefox 43 0 4 chrome 47 0 2526 111 Firefox 43 0 4 不需要第三方软件 代码 xff1a from seleniu
  • 银河麒麟踩坑笔记——打包QT程序

    背景 xff1a 出于项目需要 xff0c 因为银河麒麟的环境配起来太繁琐太麻烦了 xff0c 最近被要求在银河麒麟 v10系统 43 4000CPU环境下 xff0c 将已经配好QT 达梦数据库环境的QT程序打包 xff0c 为方便移植到