在Ubuntu14.04下安装gcc 6.2解决C++14支持问题

在学习《C++ Primer》时,我用的环境是Ubuntu14.04,采用DPKG机制最新能使用的gcc版本是4.8.4,虽然这个版本已经对C++11支持的已经很好了,但是还是有一些小问题。 
例如,对于string类型,可以使用insert(p,b,e) 将迭代器b,e指定范围内的元素插入到迭代器p指向的元素之前。在c++11标准下,insert返回的是第一个新加入元素的迭代器,旧版本中返回void;在使用g++ 4.8进行编译的时候会报错,提醒insert返回的是void类型,无法用上述函数返回一个迭代器。 
解决上述问题可以通过安装更高版本的gcc来解决问题,我安装的是gcc5.3.0来解决。

下载解压缩

gcc镜像站点上下载GCC5.3,可供下载的文件有两种形式:gcc-5.3.0.tar.gz和gcc-5.3.0.tar.bz2。两种文件的内容都是一样的。 
通过tar -xzvf gcc-5.3.0.tar.gz 或者tar -xjvf gcc-5.3.0.tar.gz 解压相应的文件,解压后得到目录gcc-5.3.0,在gcc-5.3.0/INSTALL里面有详细的安装说明。


安装依赖

编译gcc源码时需要安装GMPMPFR,MPC三个依赖,下载最新版本。我下的三个版本分别是gmp-6.1.0,mpc-1.0.3,mpfr-3.1.3。

最先安装GMP,解压GMP的压缩包后,得到源代码目录gmp-6.1.0。在该目录的同级目录下建立一个临时的编译目录,这里命名为temp。为了防止在安装目录下编译产生的目录产生混乱,然后开始配置安装选项,进入temp目录,输入以下命令进行配置: 
../gmp-6.1.0/configure –prefix=/usr/local/gmp-6.1.0 
make & make install

./configure -prefix=/usr/local/gmp-6.1.1

之后清空temp,安装MPFR,配置的时候需要添加依赖关系 
rm -r * 
../mpfr-3.1.3/configure –prefix=/usr/local/mpfr-3.1.3 –with-gmp=/usr/local/gmp-6.1.0

./configure -prefix=/usr/local/mpfr-3.1.5 -with-gmp=/usr/local/gmp-6.1.1

最后安装MPC,清空temp添加GMP,MPFR依赖。 
rm -r * 
../mpc-1.0.3/configure –prefix=/usr/local/mpc-1.0.3 –with-gmp=/usr/local/gmp-6.1.0 –with-mpfr=/usr/local/mpfr-3.1.3

./configure -prefix=/usr/local/mpc-1.0.3 -with-gmp=/usr/local/gmp-6.1.1 -with-mpfr=/usr/local/mpfr-3.1.5

安装好这三个依赖之后才可以安装gcc,否则编译的时候会报错

编译安装GCC

再次清空temp首先配置GCC,在temp文件夹中执行以下命令,注意,此时temp和gcc-5.3.0在同级目录下 
../gcc-5.3.0/configure –prefix=/usr/local/gcc-5.3 –enable-threads=posix –disable-checking –disable-multilib –enable-languages=c,c++,java,objc –with-gmp=/usr/local/gmp-6.1.0 –with-mpfr=/usr/local/mpfr-3.1.3 –with-mpc=/usr/local/mpc-1.0.3 

./configure -prefix=/usr/local/gcc-6.2 -enable-threads=posix -disable-checking -disable-multilib -enable-languages=c,c++,java 
-with-gmp=/usr/local/gmp-6.1.1 -with-mpfr=/usr/local/mpfr-3.1.5 -with-mpc=/usr/local/mpc-1.0.3 

在配置时,对于语言language=选项,可以根据自己需要的编译器选择语言。 
make 
sudo make install 
至此GCC5.3安装完毕。

上面是我安装gcc6.2时的命令。

配置环境变量

此时系统中存在两个版本的gcc,一个是/usr/bin/gcc , 另一个是/usr/local/gcc-5.3/ 如不修改环境变量,在每次调用5.3版本的gcc时都需要指定路径。为了方便使用,可以在/usr/bin目录下做一个符号链接

cd /usr/bin 
ln -s /usr/local/gcc-5.3/bin/gcc gcc53 
ln -s /usr/local/gcc-5.3/bin/g++ g++53

这样就可以使用gcc53 g++53来调用程序了,旧版本的gcc,g++仍然可以适用。

对于库路径同样需要设置下,这样,保证在调用库函数的时候可以适用到新版编译器的库函数,在etc/profile文件中适用root权限添加如下代码

export  LD_LIBRARY_PATH=/usr/local/gcc-5.3/lib:/usr/local/gcc-5.3/lib64:$LD_LIBRARY_PATH
 
 
  • 1
  • 1

注销重新登录,使变量生效

至此,gcc5.3安装完毕,解决了上述C++11的支持问题。

转自:http://blog.csdn.net/njudongchen/article/details/50511867

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值