Centos7中Qt安装、开辟、摆设、docker打包保姆级教程

打印 上一主题 下一主题

主题 948|帖子 948|积分 2854

1. 简介、概述(操纵须知)

        首先我们必要知道centos 6 已经在2020.11.30停止维护、centos7在2024年6月30日停止维护、centos8也是在2021年12月31日停止了维护,官方不在支持维护这意味着yum相干源无法利用。更换yum源的题目我这里不在展开,csdn中也有很多大佬提出方法。
        但是很多体量较大的公司依旧还是在利用centos系统作为服务器。所以我们在centos中利用qt以及打包摆设等需求依旧还是存在的,这也是这篇博客的由来。
1.1 Qt打包后兼容性题目

        写前面:假如Qt步伐在高版本系统中打包那么只能在更高版本中打开(已经踩过的坑盼望各人不要再踩了)
        因为必要摆设的系统是centos7,所以这里选择centos7进行打包Qt,不外还必要注意一点,因为我的Qt版本为5.14.2,必要c++11以上的情况支持。然而centos7的默认gcc版本为4.8.5(假如各人利用yum install gcc,这种下令行安装,各人就会看到是4.8.5版本的),gcc4.8.5版本的无法支持Qt5.14.2。我这里选择本身本事编译gcc7.5.0版本(但是生产情况一般不更新gcc,其他基于gcc的软件可能会有题目,所以才会有docker的方案)。
1.2 打包工具(linuxdeployqt)

        相信各人在windows系统中打包时都有用到windeployqt(安装qt时自带),在linux中安装qt时并没有带打包工具,所以必要本身下载。
1.3 博客由来

        本篇博客的由来是因为在Windows中开辟的Qt步伐必要在Linux系统中利用,Qt作为跨平台框架,支持Windows、Linux和Mac系统。因此,我们将讨论怎样将在Windows开辟的Qt步伐移植到Linux系统中进行打包摆设的过程。
2. centos7中安装Qt

Qt Downloads:自行前往安装下载。
我安装几次Qt,貌似是低版本的安装器是这样的,高版本的安装器更酷炫一些选择和功能也更多一些,这里就不在赘述。
各人可以利用下令行打开这个在后面添加镜像,到后面安装时会快很多。
  1. .\<安装工具> --mirror https://mirrors.ustc.edu.cn/qtproject
复制代码

点击Next;

勾上,下一步;

这里没账号的可以本身注册一个(听别人说不好注册)我本身注册的时候挺好注册的,这里就不讲了各人本身办理一下。
Next;

各人自行调解这个路径。
下一步;

假如各人纠结就全选就完事儿了。

各人耐烦等待安装,假如没有用镜像的会比较久一些。
安装完成之后,各人找到该目次,

在目次下输入:
  1. sudo ./qtcreater
复制代码
或者:
  1. ./qtcreater
复制代码
打开之后各人假如可以顺利运行本身的项目那就恭喜各人,假如困难重重,那么也要恭喜你,因为你履历过了。。。
各人大概率会遇到一些巨细写题目,按照报错的提示修改一般都可以修改好的。
但是假如各人像我这里这样:

就可能比较麻烦(但是也不肯定)
3. centos7中更新gcc

我在csdn中看到可以修改pro文件,在pro文件中添加一行就可以
  1. QMAKE_CXXFLAGS += -std=c++11
复制代码
但是现实上,假如你的编译套件达不到支持c++11的话,加了也是没有用的(安装我的理解,假如有大佬比较懂这些,盼望可以指出我的题目)。
所以我这里本身编译了更新版本的gcc7.5版本的,我也没有更新很高版本的gcc,因为我上面提到了只能向下兼容,假如你更新了很高版本的gcc,那么你的目的呆板必要划一版本的gcc或者更高版本的gcc。
手动编译gcc我这里简单讲下(不会写很细,假如不行就在开一个窗口搜刮centos7更新gcc)
连接:各人可以本身在这里找本身所必要的版本
  1. wget https://ftp.gnu.org/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz
复制代码
假如下载太慢也可以利用win下载在传到linux中。
下载完成之后解压:
  1. tar -xvf gcc-7.5.0.tar.gz
复制代码
解压后安装编译所必要的库
  1. ## 编译常用软件包
  2. yum install -y gcc-c++ libstdc++-static ant cmake byacc flex automake libtool binutils-devel bison ncurses-devel gcc kernel-devel libtool libatomic libcurl-devel texinfo
复制代码
天生makefile文件准备make
  1. ./configure --prefix=/usr/local/gcc-7.5.0 --enable-bootstrap --enable-languages=c,c++ --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib
复制代码
接下来make:
  1. make -j$(nproc)
复制代码
这里小做解释:make是构建工具,用于主动化编译和构建软件项目。它读取一个名为 Makefile 的文件,此中包罗了编译和构建项目所需的指令和规则。通过运行 make 下令,系统会根据 Makefile 中的规则执行相应的操纵。
参数 -j :  可以让make在多个处理器焦点上并行执行编译任务,加快整个编译过程的速度。这里的nproc会被替换成系统的处理器焦点数,所以假如各人知道本身的电脑有多少个处理器焦点就可以将$(nproc)替换成本身的处理器焦点数量。比方:
  1. make -j4
复制代码
make的过程会比较久,各人耐烦等待。。。
make完成之后:
  1. make install
复制代码
可以本身检察gcc的版本啦。
4. 编译套件Kit

接下来各人就可以在qtcreater中编译本身的编译套件了。

工具->选项


没题目的话,那就是没题目了。
5. 开始打包

5.1 编译Reslease版本

运行乐成后,各人左下角编译成Reslease版本(和win一样)

各人可以在编译目次中(Reslease),尝试的打开一下本身的运行步伐

假如不行,那就是失败了(本身看看是什么缘故原由)。
假如可以正常打开那么恭喜你,乐成了一大半了。
接下来我们将可执行步伐复制出来单独放在一个文件夹中像这样:

这个就先这样放着,各人先跟我一起去安装工具。
5.2 打包工具linuxdeployqt

各人前往:Releases · probonopd/linuxdeployqt · GitHub

最方便的是直接下载编译好的linuxdeployqt工具
  1. chmod +x linuxdeployqt-continuous-x86_64.AppImage  # 赋予可执行权限
  2. mv linuxdeployqt-continuous-x86_64.AppImage linuxdeployqt  # 改名以便后面操作
  3. ./linuxdelpoyqt -version  
复制代码
5.3 正式开始打包

各人回到5.1那一步在复制出来的可执行文件中打开终端,我这里用finashell(在centos7中截图很含糊)
输入:
  1. linuxdeployqt <你的程序名> -appimage
复制代码

有题目,各人不要慌,回到系统中,双击打开AppRun,是可以正常打开的。
各人有必要可以修改,default.desktop文件,关于软件的配置参数都在这里。
  1. [Desktop Entry]
  2. Type=Application
  3. Name=这里填应用的名字
  4. Comment=这里描述该程序功能
  5. Exec=这里是可执行文件的路径。仅当可执行文件不在 $PATH 变量中指定的任何路径中时,才必须使用可执行文件的完整路径。例如,路径 /usr/bin 内的任何文件都不需要在 Exec 字段中指定其完整路径,而只需指定其文件名即可,或者在当前路径下也不用。
  6. Icon=这里是应用图标。例如,目录 /usr/share/pixmaps 下的所有图标不需要指定其完整路径,但不需要指定不带扩展名的文件名。例如,如果图标文件是 /usr/share/pixmaps/wallch.png,则图标字段应该只是“wallch”。或者在当前路径下也不用。所有其他图标都应指定其完整路径。
  7. Categories=Application;
复制代码
打包完成之后各人就可以将这个目次压缩发给别人了。
6. 将打包后的放在docker容器

以上压缩包在目的机中打开很轻易有题目。最常见的是glibc版本不支持的题目。
目的呆板假如可以升级gcc那么升级gcc,假如目的呆板是生产情况,不发起更新gcc。
简单粗暴放到docker容器中,所有题目都可以办理。
创建一个新的docker容器:
  1. docker run -it --name <容器名称> -v /path/to/your/qt/app:/app <指定要使用的docker镜像名称>
  2. # -v /path/to/your/qt/app:/app :将你的qt程序映射到容器中的/app目录
复制代码
将打包好的Qt应用复制到容器中,注意路径
  1. docker cp /path/to/your/qt/app <容器名称>:/app
复制代码
进入容器
  1. docker exec -it my_container_name /app/your_app_name
复制代码

进入:

然后就必要在图形化界面中运行步伐啦,在容器中遇到了libc++版本的题目,依旧是更新gcc。将libc++6.0.19替换为7.5版本的libc++6.0.24,做一个软连接就可以啦!
到这里各人没题目的,那就是没题目了。有题目那就是失败了!

假如博客有什么不对的地方,还望大佬指出!!。
假如有什么报错,也可以批评或者私信我!!。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

来自云龙湖轮廓分明的月亮

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表