ubuntu安装qt4.8.6_切换gcc版本

转载(https://blog.csdn.net/qq_26849933/article/details/127115646)

前言

ubuntu18.04 及以后的版本(20.04,22.04)在编译 QT4 库的时候会报错,无法正常编译通过,主要原来是 ubuntu18.04 的 GCC 编译器默认的是 GCC9,版本过高。
若需要使用 QT4 时,可以有两种方法来解决。

  1. 使用 ubuntu16.04
  2. 降低 GCC 的版本

ubuntu18.04,20.04 版本默认已经将 gcc 支持的版本更新到了 gcc-9(22.04 为 gcc-11),如果要降级 gcc 的版本,需要设置新的源,然后安装指定版本,思路就是这样。
本文主要讲解怎么通过降低 GCC 的版本在 ubuntu18.04,ubuntu20.04,ubuntu22.04 中使用 QT4 的库。
安装 QT5 和 QT6 的童鞋请绕行。

一、查看 GCC 版本

使用命令

gcc -v 查询版本
在 ubuntu18.04 中会得到 gcc 版本为 9
在 ubuntu22.04 中会得到 gcc 版本为 11

这两个版本在安装 QT4 时都会报错,无法正常安装。

二、QT4 库安装

下载

  1. 官方下载入口:QT 下载戳这里 选择自己需要的版本下载 tar.gz 的文件。

降低 GCC 编译器版本

前期介绍

我们需要降低 gcc 的版本为 4.8.5(有些文章说 gcc7 也可以,我没试过)。
可以看到如下这个图片,4.8 版本对应的各个 ubuntu 版本:
从这个图里面可以看到 4.8.5 版本支持最高的 ubuntu 是 16.04 版本。也就是 xenial(ubuntu 版本的代号)。并不支持 focal(ubuntu20.04 的代号),也就是 ubuntu20.04。其实很多文章提到的安装方法也是基于这个事实来做的安装。

具体实施

  1. 通过 root 权限,修改 / etc/apt/sources.list 文件,在末尾增加如下配置:
deb http://dk.archive.ubuntu.com/ubuntu/ xenial main
deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe
  1. 更新软件
sudo apt-get update
  1. 安装 gcc-4.8.5 和 g+±4.8.5
sudo apt-get install gcc-4.8
sudo apt-get install g++-4.8
  1. 查看 gcc 安装情况
ls /usr/bin/gcc* -l

我使用的是 ubuntu22.04 默认 gcc 是 11 版本,可以看到 4.8 版本的 gcc 已下载。

  1. 使用 alternatives 工具管理 gcc 优先级,先将两个版本的 gcc 和 g++ 加入到 alternativers。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90

其中 100 是优先级,数字越高,优先级越高。

  1. 完成上面的操作之后,我们就可以通过下面的指令来选择不同的 gcc 和 g++ 的版本了,(注意使用之前确保至少有两个 gcc 或者 g++ 的版本进行了第 6 步的操作):
sudo update-alternatives --config gcc

这里可以看到目前使用的已经是 4.8 版本的 gcc 了,如果需要使用 11 版本,切换到 11 即可。

  1. 再次查看 gcc 版本
    这里可以看到 gcc 版本已被切换。

  2. 同样的步骤设置 g++ 的版本(略)。
    注意一个问题:
    当切换使用了其他版本的 gcc 时,请务必保持 g++ 的版本和 gcc 版本的一致性,否则用配置出来的项目遇到 c++ 代码还是会用之前版本的 gcc。

QT4 详细安装步骤

  1. 安装依赖库

sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libxcursor-dev libxext-dev libxft-dev libxi-dev libxrandr-dev libxrender-dev

  1. 通过终端打开下载好的文件路径。使用命令进行解压。

tar xzvf qt-everywhere-opensource-src-4.8.6.tar.gz

  1. 解压完成后进入文件夹,使用./configure 进行配置,需要安装特殊功能的使用 ./configure --help 进行查看怎么加参数。

./configure

  1. 键盘输入 o + 回车, 后续输入 yes + 回车
    4. 使用 make 命令编译,编译完成后使用 make install 安装,安装完成后在 qt creator 中即可使用 QT4 版本的库。

编译Qt库的时候遇到的问题

总是make失败,make clean也不行

Makefile:17093: recipe for target '.obj/release-shared/qsslcertificate.o' failed
make[1]: *** [.obj/release-shared/qsslcertificate.o] Error 1
make[1]: Leaving directory '/opt/20231211qt/qt-everywhere-opensource-src-4.8.6/src/network'
Makefile:278: recipe for target 'sub-network-make_default-ordered' failed
make: *** [sub-network-make_default-ordered] Error 2

satckoverflow的帖子
上发现类似问题,用这种方式解决

./configure -no-openssl

参考链接

Ubuntu 下多个版本 GCC 编译器的安装和切换

ubuntu20.04 版本安装 gcc-4.8
ubuntu18.04 QT 安装编译报错

posted @ 2023-12-12 23:09  sgggr  阅读(296)  评论(0编辑  收藏  举报