linux下打包C++ Qt可执行程序出现的问题总结
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可执行程序出现的问题总结相关推荐
- Linux下打包压缩war和解压war包 zip和jar
============jar================= 把当前目录下的所有文件打包成game.war jar -cvfM0 game.war ./ -c 创建war包 -v 显示过程 ...
- Linux下打包压缩war、解压war包和jar命令
环境 RedHat Linux 9 + VWWare 8.0 + SSH 3.2.9 + Putty 0.62 问题 Linux下打包压缩war.解压war包和jar命令 解决 把project_a文 ...
- Linux下打包命令tar
Linux下打包命令tar Linux下最常用的打包程序是tar,用tar命令打成的包文件通常以.tar结尾 1.名词解释 打包:是指将若干文件,目录合成一个文件,可以理解为装到一个文件里去了: 压缩 ...
- 打包文件linux,Linux下打包命令tar
Linux下打包命令tar Linux下最常用的打包程序是tar,用tar命令打成的包文件通常以.tar结尾 1.名词解释 打包:是指将若干文件,目录合成一个文件,可以理解为装到一个文件里去了: 压缩 ...
- Linux下不使用qt自带sleep,Linux下Qt多线程编程
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 作者:武汉华嵌嵌入式培训中心 技术部 以下和大家分享Linux平台下Qt两种多线程编程的方式: 1.使用Linux平台下的线程函数.以下是给出的代码片段: ...
- Hello Qt(在Linux下编写运行Qt程序)
From: http://www.yafeilinux.com/?p=763 <一>Hello Qt小试牛刀! 说明:我们需要在Linux下已经安装了Qt. 1.下面是整个程序的详细介绍: ...
- Linux下打包qt程序,可以发布到一台纯净的linux发行版系统上
1.把你要发布的程序单独放到一个文件夹下 2.在文件夹下创建一个sh脚本名为pack.sh 输入以下内容 #!/bin/sh exe="app" #你需要发布的程序名称 des=& ...
- linux 下打包可执行程序
本文参考自:https://blog.csdn.net/weixin_43053387/article/details/88080577 首先创建可执行文件的文件夹,我们打包的可执行文件依赖的动态库都 ...
- Linux下解决发布Qt程序报错:it could not find or load the Qt platform plugin “xcb” in “”
简述 用Qt5.8版本在ubuntu16.04版本下编写Qt应用程序,生成release版本并打包,到另一台无Qt环境的linux系统中运行. 网上通常是按以下几个步骤进行: 1.生成release程 ...
最新文章
- Spring Cloud Alibba教程:Sentinel的使用
- java jce 授权_【Java加密】(一)JCE配置加密算法强度不受限授权的安装
- centeros7安装mysql - 风中追风_lonely - 博客园
- 我不是天生的飞鸽传书2011
- Adobe illustrator 抽丝剥茧选中多个点 - 连载 13
- 程序员讨厌领导又不想辞职,用一妙招让领导离职,网友:佩服
- 【H.264/AVC视频编解码技术详解】七、 熵编码算法(1):基础知识
- 多线程和并发管理 .NET多线程服务
- Revit PromptForFamilyInstancePlacementOptions 族放置API
- MySql入门基础讲解
- 这位辩手,你想试试线上语音 battle 么?
- 常见的视频格式以及视频编解码标准(附带OpenCV实现视频的读取与保存)
- 深入理解逻辑回归算法(Logistic Regression)
- java 二进制转图片_Java如何把二进制数据转换成图片???
- win10c盘清理(win10磁盘清理和磁盘整理)
- 简易串口助手通信(齐全) 可实现ASII和十六进制发送指令 并显示
- VS1005 HiRes 高清录音开发模块 BOB MK2
- android 8 zuk,联想开推ZUI3.5大版本更新:ZUK手机怒升安卓8.0!
- 绘画基础学习之两点透视原理
- 不要放过那个装X的阿里,androidstudio基础