Ubuntu下gcc/g++多版本共存和版本切换及使用c++11标准的方法
公司的ubuntu系统上,对应的g++版本很低,不支持C++11标准中的内容,于是我对g++进行了升级。不过升级完成,并且进行了相关的设置后,使用g++ 对c++11基本功能的hello world程序可以编译成功,但到了我的程序,还是会编译出现问题,突然恍然大悟,因为我的程序依赖的公司的很多公共组件都是在老版本上编译的,不支持C++11的内容,所以还是有问题。无奈为了程序能在我们的平台上运行,只能修改程序,不过这个过程中倒是根据网上的教程,熟悉了g++版本的切换等,记录下来。
一、查看gcc、g++的版本方法:
二、下载安装新版本的方法
g++ 4.8以上的版本支持C++11标准的内容。
安装方法:
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test
- sudo apt-get update
- sudo apt-get install gcc-4.8
- sudo apt-get install g++-4.8
安装完成后,可以查看一下版本:
三、版本的切换管理:
方法1:
首先需要将各个版本都加入到候选列表中,并设置优先级(优先级可以不同版本设置相同,后面再通过配置来指定使用的版本)
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
再输入
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 50
接着输入:
sudo update-alternatives --config gcc
会看到如下的选项,有 3 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。
可以看到对应的版本,输入对应的编号,即可修改默认的gcc版本。
对于g++,跟上面的方法相同,最后可以看到:
方法2:
另外,还有一种方法,可以修改默认的g++版本,我们可以更改一下gcc的软链接:
- sudo rm /usr/bin/gcc
- sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc
- sudo rm /usr/bin/g++
- sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++
从下图可以看出,其实就是更改了gcc的软链接:
使用gcc -v可以查看g++版本,查看修改是否成功。
四、使用C++11的方法
对于已经默认修改为g++ 4.8后,编译时,仍可能出现C++11没有生效的问题,如下:
处理的办法如下:
参数中加上-std=c++11即可:
如果想参数为默认,不需每次添加的话,需要修改如下位置:
sudo vim ~/.bashrc
然后输入自己的管理员密码,进去后在
# some more ls aliases
这一行注释下,输入
alias g++='g++ -std=c++11'
这样就不用每次输入参数了