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 时,可以有两种方法来解决。
- 使用 ubuntu16.04
- 降低 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 库安装
下载
- 官方下载入口: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。其实很多文章提到的安装方法也是基于这个事实来做的安装。
具体实施
- 通过 root 权限,修改 / etc/apt/sources.list 文件,在末尾增加如下配置:
deb http://dk.archive.ubuntu.com/ubuntu/ xenial main
deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe
- 更新软件
sudo apt-get update
- 安装 gcc-4.8.5 和 g+±4.8.5
sudo apt-get install gcc-4.8
sudo apt-get install g++-4.8
- 查看 gcc 安装情况
ls /usr/bin/gcc* -l
我使用的是 ubuntu22.04 默认 gcc 是 11 版本,可以看到 4.8 版本的 gcc 已下载。
- 使用 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 是优先级,数字越高,优先级越高。
- 完成上面的操作之后,我们就可以通过下面的指令来选择不同的 gcc 和 g++ 的版本了,(注意使用之前确保至少有两个 gcc 或者 g++ 的版本进行了第 6 步的操作):
sudo update-alternatives --config gcc
这里可以看到目前使用的已经是 4.8 版本的 gcc 了,如果需要使用 11 版本,切换到 11 即可。
-
再次查看 gcc 版本
这里可以看到 gcc 版本已被切换。 -
同样的步骤设置 g++ 的版本(略)。
注意一个问题:
当切换使用了其他版本的 gcc 时,请务必保持 g++ 的版本和 gcc 版本的一致性,否则用配置出来的项目遇到 c++ 代码还是会用之前版本的 gcc。
QT4 详细安装步骤
- 安装依赖库
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libxcursor-dev libxext-dev libxft-dev libxi-dev libxrandr-dev libxrender-dev
- 通过终端打开下载好的文件路径。使用命令进行解压。
tar xzvf qt-everywhere-opensource-src-4.8.6.tar.gz
- 解压完成后进入文件夹,使用./configure 进行配置,需要安装特殊功能的使用 ./configure --help 进行查看怎么加参数。
./configure
- 键盘输入 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