一、概述
- gcc: gnu的C编译器
- g++:gnu的C++编译器。
linux系统查看gcc/g++版本的命令
gcc --version //版本for example: gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
g++ --version //版本for example: g++ (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
实际开发中使用的软件为了保证稳定,可能是使用较低版本的gcc/g++编译器生成的,若用户使用高版本gcc/g++编译可能造成软件报错,无法使用。例如,我系统默认安装的是gcc/g++ 5.4.0版本, 程序中调用了protobuf的库, 编译protobuf-3.3.0版本后,调用程序报错“symbol lookup error: undefined symbol: _ZN6google8protobuf8iternal26fixed_address_empty_stringE” ;解决方案:将gcc/g++降级到4.8版本,然后编译protobuf-3.3.0库,则程序正常运行。
这就涉及到了将系统gcc/g++降级。当然,有时会涉及将gcc/g++版本升级,方法类似,本文仅以gcc/g++降级为例讲解方法。
二、原理
查看gcc/g++安装位置,命令:
which gcc
结果显示/usr/bin/gcc, 查看/usr/bin文件夹可以发现gcc和g++实际都是软链接(使用ls -l查看文件可以看到gcc -> gcc-5, g++ -> -> gcc-5),实际安装程序为gcc-5/g++-5, 软连接将gcc/g++分别链接到gcc-5/g++-5,所以实际使用gcc/g++编译时会链接到gcc-5/g++-5。
(使用ls -l查看文件可以看到gcc -> gcc-5, g++ -> -> gcc-5)改变gcc/g++版本只需要安装新版本,然后将gcc/g++分别链接到新版本的程序即可(linux系统这样设计程序便于升级/降级,多个版本程序可同时存在,只需要调用软链接的接口选择使用哪个版本)。
三、具体操作步骤
1. 安装指定版本gcc/g++
以4.8为例:
sudo apt-get install -y gcc-4.8
Reading package lists... Don