linux下打包C++ Qt可执行程序

  • 零、问题描述
  • 一、出现的问题和解决方法
  • 二、通过配置脚本设置环境变量

零、问题描述

最近在搞linux下打包程序,由于使用了Qt相关的函数接口,出现了很多Qt相关的问题,上篇文章写了linux下打包C++可执行程序的方法:https://blog.csdn.net/toby54king/article/details/103376514,shell脚本打包的程序,打包了很多系统的库,造成转移到其他系统上出现冲突,后来只能一个一个手动挑选缺失的库,这样就解决了。

一、出现的问题和解决方法

下面总结一下出现的问题以及解决方法:
1、error:undefined reference to ‘vtable for *’ -》:
把windows下的moc文件放入到linux下面,加入到需要的.cpp文件中,同时注意修改moc文件中的头文件路径为linux下面的。

2、libQt5Core.so:error:undefined reference to ‘ucal_clone_54’ -》缺少库libicuil8n.so.54库

3、error while loading shared libraries:xxx.so: cannot open shared object file:No such file or directory
需要设置环境变量:export LD_LIBRARY_PATH=yourLibPath

4、this application failed to start because it could not find or load the Qt platform plug “xcb”.
原因:缺少qt跨平台的platform文件夹

5、QXcbConnection:Could not connect to display.(xshell终端下不能显示Qt程序)
在.bashrc文件中添加:
export QT_QPA_PLATFORM=‘offscreen’

6、Available platform plugins are: linuxfb, minimal, offscreen, xcb.
在终端设置环境变量 export QT_DEBUG_PLUGINS=1,可以查看缺失的库,我这里缺失了libQt5DBus.so.5库造成的。

7、/bin/bash^M: bad interpreter: No such file or directory”
在执行shell脚本时提示这样的错误主要是由于shell脚本文件是dos格式,即每一行结尾以\r\n来标识,而unix格式的文件行尾则以\n来标识。
查看脚本文件是dos格式还是unix格式的办法。
1》、cat -A filename 从显示结果可以判断,dos格式的文件行尾为^M,unix格式的文件行尾为,unix格式的文件行尾为,unix格式的文件行尾为。
解决方法:
1》、使用sed命令sed -i “s/\r//” filename 或者 sed -i “s/^M//” filename直接替换结尾符为unix格式(测试这种方法好使)

二、通过配置脚本设置环境变量

由于在linux下每次执行程序都需要设置好环境变量和设置显示终端,所以可以写一个shell脚本,使用shell脚本去启动程序即可,shell脚本和可执行程序在一个目录下,我需要的shell脚本如下:

#!/bin/bash
#file:StartProgram.sh
#author:ISMILELIexport QT_QPA_PLATFORM='offscreen'
export LD_LIBRARY_PATH=$PWDecho "----------StartProgram.sh------"#需要给程序传入参数的话,可以使用一下方法启动程序
./appExe.out $1 $2 $3 $4 $5

linux下打包C++ Qt可执行程序出现的问题总结相关推荐

  1. Linux下打包压缩war和解压war包 zip和jar

    ============jar================= 把当前目录下的所有文件打包成game.war jar -cvfM0 game.war ./ -c   创建war包 -v   显示过程 ...

  2. Linux下打包压缩war、解压war包和jar命令

    环境 RedHat Linux 9 + VWWare 8.0 + SSH 3.2.9 + Putty 0.62 问题 Linux下打包压缩war.解压war包和jar命令 解决 把project_a文 ...

  3. Linux下打包命令tar

    Linux下打包命令tar Linux下最常用的打包程序是tar,用tar命令打成的包文件通常以.tar结尾 1.名词解释 打包:是指将若干文件,目录合成一个文件,可以理解为装到一个文件里去了: 压缩 ...

  4. 打包文件linux,Linux下打包命令tar

    Linux下打包命令tar Linux下最常用的打包程序是tar,用tar命令打成的包文件通常以.tar结尾 1.名词解释 打包:是指将若干文件,目录合成一个文件,可以理解为装到一个文件里去了: 压缩 ...

  5. Linux下不使用qt自带sleep,Linux下Qt多线程编程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 作者:武汉华嵌嵌入式培训中心 技术部 以下和大家分享Linux平台下Qt两种多线程编程的方式: 1.使用Linux平台下的线程函数.以下是给出的代码片段: ...

  6. Hello Qt(在Linux下编写运行Qt程序)

    From: http://www.yafeilinux.com/?p=763 <一>Hello Qt小试牛刀! 说明:我们需要在Linux下已经安装了Qt. 1.下面是整个程序的详细介绍: ...

  7. Linux下打包qt程序,可以发布到一台纯净的linux发行版系统上

    1.把你要发布的程序单独放到一个文件夹下 2.在文件夹下创建一个sh脚本名为pack.sh 输入以下内容 #!/bin/sh exe="app" #你需要发布的程序名称 des=& ...

  8. linux 下打包可执行程序

    本文参考自:https://blog.csdn.net/weixin_43053387/article/details/88080577 首先创建可执行文件的文件夹,我们打包的可执行文件依赖的动态库都 ...

  9. Linux下解决发布Qt程序报错:it could not find or load the Qt platform plugin “xcb” in “”

    简述 用Qt5.8版本在ubuntu16.04版本下编写Qt应用程序,生成release版本并打包,到另一台无Qt环境的linux系统中运行. 网上通常是按以下几个步骤进行: 1.生成release程 ...

最新文章

  1. Spring Cloud Alibba教程:Sentinel的使用
  2. java jce 授权_【Java加密】(一)JCE配置加密算法强度不受限授权的安装
  3. centeros7安装mysql - 风中追风_lonely - 博客园
  4. 我不是天生的飞鸽传书2011
  5. Adobe illustrator 抽丝剥茧选中多个点 - 连载 13
  6. 程序员讨厌领导又不想辞职,用一妙招让领导离职,网友:佩服
  7. 【H.264/AVC视频编解码技术详解】七、 熵编码算法(1):基础知识
  8. 多线程和并发管理 .NET多线程服务
  9. Revit PromptForFamilyInstancePlacementOptions 族放置API
  10. MySql入门基础讲解
  11. 这位辩手,你想试试线上语音 battle 么?
  12. 常见的视频格式以及视频编解码标准(附带OpenCV实现视频的读取与保存)
  13. 深入理解逻辑回归算法(Logistic Regression)
  14. java 二进制转图片_Java如何把二进制数据转换成图片???
  15. win10c盘清理(win10磁盘清理和磁盘整理)
  16. 简易串口助手通信(齐全) 可实现ASII和十六进制发送指令 并显示
  17. VS1005 HiRes 高清录音开发模块 BOB MK2
  18. android 8 zuk,联想开推ZUI3.5大版本更新:ZUK手机怒升安卓8.0!
  19. 绘画基础学习之两点透视原理
  20. 不要放过那个装X的阿里,androidstudio基础

热门文章

  1. 阿里物联网平台(IOT)——业务服务器获取阿里iot平台接入设备的实时设备采集数据
  2. 深圳招银java社招都有hr面吗,深圳招银网络科技
  3. 招银网络科技--后端面试记录
  4. linux 卸载yum源,CentOS下rpm包与yum安装与卸载更新系统源
  5. 国仁网络资讯:微信视频号怎么给自己账号精准定位;账号定位又分为哪些类?
  6. java中jlaber用法_laber的for属性
  7. CTFshow-萌新 Writeup
  8. 出入库与库存系统的模型问题
  9. 计算机硬件和软件的主要功能,网络技术在计算机软硬件的作用
  10. 国外最好用的WordPress主机推荐