方案

1.使用第三方apt仓库下载编译好的qt4,有可能需要翻墙。

2.自己编译源码。

使用第三方apt仓库

sudo add-apt-repository ppa:ubuntuhandbook1/ppa
sudo apt update
sudo apt install qt4-default

想删除这个仓库的话就

sudo add-apt-repository --remove ppa:ubuntuhandbook1/ppa

自己编译源码

1.下载源码

搜索qt4,找官网下源码

截至写本文时是这个网址

2.解压

一般人会下载zip文件,因为tar文件解压参数比较长记不住,但是zip文件解压时要注意使用参数-a,即

unzip -a qt-everywhere-opensource-src-4.8.6.zip

否则之后会报You don't seem to have 'make' or 'gmake' in your PATH. cannot proceed这样的错。

3.换行符转换

进入解压好的文件夹,把configure文件的dos换行符换成unix的

sudo apt-get install dos2unix
dos2unix configure

4.编译配置

接下来按理说就要配置编译了,但根据目前实验最高能使用gcc7版本的编译器,最合适的应该是gcc4.8,否则编译不过,但是高版本ubuntu的apt仓库里可能没有这么老的gcc,所以要进行一些复杂操作了。

4.1比较简单的gcc4.8

如果选用gcc4.8则比较简单

sudo gedit /etc/apt/sources.list

最后一行添加deb http://archive.ubuntu.com/ubuntu bionic main universe

这个是ubuntu18的apt源,添加完就sudo apt update一下

不出意外的话会报错缺少PUBLIC KEY,用下面这个指令添加公钥,如果你的公钥和我不同则自己替换

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

然后就可以放心地

sudo apt update
sudo apt install gcc-4.8 g++-4.8

接下来将默认gcc和g++改成4.8

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 60

现在在qt源码的目录中

sudo ./configure -opensource -no-openssl -no-pch
sudo make -j12
sudo make install

完成qt4的编译安装

4.2略微复杂的gcc7

如果选用gcc7则稍微复杂

sudo gedit /etc/apt/sources.list

最后一行添加deb http://archive.ubuntu.com/ubuntu focal main universe,这是ubuntu20的apt源

安装并将gcc7和g++7作为默认编译器

sudo apt update
sudo apt install gcc-7 g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 60

先配置一下qt4项目

./configure -opensource -no-openssl -no-pch

然后将C++标准切换至C++98,需要编辑两个文件

sudo gedit mkspecs/common/gcc-base.conf
找到这句
QMAKE_CXXFLAGS            += $$QMAKE_CFLAGS
改成这样
QMAKE_CXXFLAGS            += $$QMAKE_CFLAGS -std=gnu++98
sudo gedit mkspecs/common/g++-base.conf
找到这句
QMAKE_CXX = g++
改成这样
QMAKE_CXX = g++ -std=gnu++98

最后进行编译安装

sudo make -j12
sudo make install
如果觉得我的文章对你有用,请随意赞赏