Centos7中Qt安装、开发、部署、docker打包保姆级教程

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,貌似是低版本的安装器是这样的,高版本的安装器更酷炫一些选择和功能也更多一些,这里就不在赘述。

大家可以使用命令行打开这个在后面添加镜像,到后面安装时会快很多。

.\<安装工具> --mirror https://mirrors.ustc.edu.cn/qtproject

点击Next;

勾上,下一步;

这里没账号的可以自己注册一个(听别人说不好注册)我自己注册的时候挺好注册的,这里就不讲了大家自己解决一下。

Next;


大家自行调整这个路径。

下一步;

如果大家纠结就全选就完事儿了。

大家耐心等待安装,如果没有用镜像的会比较久一些。

安装完成之后,大家找到该目录,

在目录下输入:

sudo ./qtcreater

或者:

./qtcreater

打开之后大家如果可以顺利运行自己的项目那就恭喜大家,如果困难重重,那么也要恭喜你,因为你经历过了。。。

大家大概率会遇到一些大小写问题,按照报错的提示修改一般都可以修改好的。

但是如果大家像我这里这样:

就可能比较麻烦(但是也不一定)

3. centos7中更新gcc

我在csdn中看到可以修改pro文件,在pro文件中添加一行就可以

QMAKE_CXXFLAGS += -std=c++11

但是实际上,如果你的编译套件达不到支持c++11的话,加了也是没有用的(安装我的理解,如果有大佬比较懂这些,希望可以指出我的问题)。

所以我这里自己编译了更新版本的gcc7.5版本的,我也没有更新很高版本的gcc,因为我上面提到了只能向下兼容,如果你更新了很高版本的gcc,那么你的目标机器需要同等版本的gcc或者更高版本的gcc。

手动编译gcc我这里简单讲下(不会写很细,如果不行就在开一个窗口搜索centos7更新gcc)

连接:大家可以自己在这里找自己所需要的版本

wget https://ftp.gnu.org/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz

如果下载太慢也可以使用win下载在传到linux中。

下载完成之后解压:

tar -xvf gcc-7.5.0.tar.gz

解压后安装编译所需要的库

## 编译常用软件包
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

./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:

make -j$(nproc)

这里小做解释:make是构建工具,用于自动化编译和构建软件项目。它读取一个名为 Makefile 的文件,其中包含了编译和构建项目所需的指令和规则。通过运行 make 命令,系统会根据 Makefile 中的规则执行相应的操作。

参数 -j :  可以让make在多个处理器核心上并行执行编译任务,加快整个编译过程的速度。这里的nproc会被替换成系统的处理器核心数,所以如果大家知道自己的电脑有多少个处理器核心就可以将$(nproc)替换成自己的处理器核心数量。例如:

make -j4

make的过程会比较久,大家耐心等待。。。

make完成之后:

make install

可以自己查看gcc的版本啦。

4. 编译套件Kit

接下来大家就可以在qtcreater中编译自己的编译套件了。

工具->选项

没问题的话,那就是没问题了。

5. 开始打包

5.1 编译Reslease版本

运行成功后,大家左下角编译成Reslease版本(和win一样)

大家可以在编译目录中(Reslease),尝试的打开一下自己的运行程序

如果不行,那就是失败了(自己看看是什么原因)。

如果可以正常打开那么恭喜你,成功了一大半了。

接下来我们将可执行程序复制出来单独放在一个文件夹中像这样:

这个就先这样放着,大家先跟我一起去安装工具。

5.2 打包工具linuxdeployqt

大家前往:Releases · probonopd/linuxdeployqt · GitHub

最方便的是直接下载编译好的linuxdeployqt工具

chmod +x linuxdeployqt-continuous-x86_64.AppImage  # 赋予可执行权限
mv linuxdeployqt-continuous-x86_64.AppImage linuxdeployqt  # 改名以便后面操作
./linuxdelpoyqt -version  

5.3 正式开始打包

大家回到5.1那一步在复制出来的可执行文件中打开终端,我这里用finashell(在centos7中截图很模糊)

输入:

linuxdeployqt <你的程序名> -appimage

有问题,大家不要慌,回到系统中,双击打开AppRun,是可以正常打开的。

大家有需要可以修改,default.desktop文件,关于软件的配置参数都在这里。

[Desktop Entry]
Type=Application
Name=这里填应用的名字
Comment=这里描述该程序功能
Exec=这里是可执行文件的路径。仅当可执行文件不在 $PATH 变量中指定的任何路径中时,才必须使用可执行文件的完整路径。例如,路径 /usr/bin 内的任何文件都不需要在 Exec 字段中指定其完整路径,而只需指定其文件名即可,或者在当前路径下也不用。
Icon=这里是应用图标。例如,目录 /usr/share/pixmaps 下的所有图标不需要指定其完整路径,但不需要指定不带扩展名的文件名。例如,如果图标文件是 /usr/share/pixmaps/wallch.png,则图标字段应该只是“wallch”。或者在当前路径下也不用。所有其他图标都应指定其完整路径。
Categories=Application;

打包完成之后大家就可以将这个目录压缩发给别人了。

6. 将打包后的放在docker容器

以上压缩包在目标机中打开很容易有问题。最常见的是glibc版本不支持的问题。

目标机器如果可以升级gcc那么升级gcc,如果目标机器是生产环境,不建议更新gcc。

简单粗暴放到docker容器中,所有问题都可以解决。

创建一个新的docker容器:

docker run -it --name <容器名称> -v /path/to/your/qt/app:/app <指定要使用的docker镜像名称>
# -v /path/to/your/qt/app:/app :将你的qt程序映射到容器中的/app目录

将打包好的Qt应用复制到容器中,注意路径

docker cp /path/to/your/qt/app <容器名称>:/app

进入容器

docker exec -it my_container_name /app/your_app_name

进入:

然后就需要在图形化界面中运行程序啦,在容器中遇到了libc++版本的问题,依旧是更新gcc。将libc++6.0.19替换为7.5版本的libc++6.0.24,做一个软连接就可以啦!

到这里大家没问题的,那就是没问题了。有问题那就是失败了!

如果博客有什么不对的地方,还望大佬指出!!。

如果有什么报错,也可以评论或者私信我!!。

CentOS 7安装Qt,可以按照以下步骤进行操作: 1. 首先,确保已经安装了gcc编译器。可以通过在终端执行命令`gcc -v`来检查是否已安装gcc。如果没有安装gcc或者需要更高版本的gcc,可以使用yum来安装或更新gcc。 2. 下载Qt安装包,可以从官方网站上下载相应的版本。然后将安装包解压到指定的目录。 3. 授权安装脚本的执行权限,可以使用`chmod +x filename`命令来给脚本文件添加执行权限。 4. 执行安装脚本,运行`./qt-installer.run`命令来启动可视化安装界面。按照界面提示进行安装,可以选择安装路径和组件。 5. 安装完成后,可以在安装路径下找到Qt的可执行文件,比如`/opt/Qt/Qt5.15.2/Tools/QtCreator/bin/qtcreator`。可以通过命令行或者图形界面启动Qt Creator。 以上是在CentOS 7安装Qt的一般步骤,具体操作可能会因版本或其他因素而有所不同。建议在安装前仔细阅读相应的安装文档或官方指导,以确保正确安装和配置Qt。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [centos7安装QT及环境配置](https://blog.youkuaiyun.com/m0_57931726/article/details/120180973)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Centos7安装Qt](https://download.youkuaiyun.com/download/weixin_38522552/14040126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值