.ubuntu 10.04 安装 gcc4.6.1

ubuntu 10.04自带的gcc的版本是4.4.x
4.4对C++11 (即曾经的C++0x)的支持自然没有 4.6好,比如Range-based for。

下载源码包gcc-4.6.1.tar.gz                     (在这里:    ftp://ftp.gnu.org/gnu/gcc/     )
解开得到文件夹gcc-4.6.1

../gcc-4.6.1/configure   --prefix= /usr/local/gcc-4.6.1   --enable-languages=c,c++
之所以安装到 /usr/local/gcc-4.6.1 而不是默认的/usr/local下,是因为gcc没有提供make uninstall的功能,放在一个目录下方便日后删除。

最后别忘了,在.profile最后添加一行
PATH="/usr/local/gcc-4.6.0/bin:$PATH"


如果提示缺少什么包,从源里安装就行了,我缺下面这三个:
libgmp3-dev
libmpfr-dev
libmpc-dev

再次执行
../gcc-4.6.1/configure --enable-languages=c,c++
这回一帆风顺

然后执行
make
(这个过程较长,据说是编译了三次,第一次是用现有的gcc4.4编译4.6的源代码得到4.4编译的4.6,然后再用这个4.4编译的4.6编译4.6的源代码得到4.4编译的4.6编译的4.6,然后再用这个4.4编译的4.6编译的4.6编译4.6的源代码得到最终的4.4编译的4.6编译的4.6编译的4.6;ok,再用最后得到的这个4.6编译标准库)

编译完了,最后一步,安装
sudo make install

4.6将被安装至/usr/local/bin下

现在你执行 gcc -v
会告诉你是4.6.1
(你的4.4还在,不过因为路径中/usr/local/bin排在/usr/bin前面,所以不特别指明gcc唤起的就是4.6)

==============================================================================
实证一下
下面这段代码用了所谓的Range-based for,故而4.6可以编译而4.4不能编译

#include <iostream>
using namespace std;
int main()
{
    for (const auto x : { 1,2,3,5,8,13,21,34 })
        cout << x << '\n';
}

保存成hello.cpp

用4.6编译
g++ -std\=c++0x hello.cpp -o hello
没问题。

再用原来的4.4编译一下看
/usr/bin/g++ -std\=c++0x hello.cpp -o hello
说有语法错误。

多版本支持
为了让ubuntu支持多个gcc版本,需要做以下设置:

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 40
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-4.6.1/bin/gcc 60
#选择你需要的版本
$sudo update-alternatives --config gcc
添加新版共享库
为了在编译软件时候,可以使用到最新的共享库
$sudo vim /etc/ld.so.conf.d/x86_64-linux-gnu.conf

添加下面内容
/usr/local/gcc-4.6.1/lib64/
保存后执行,更新共享库

$sudo ldconfig


参考资料:

1. http://marxistprogrammer.blog.163.com/blog/static/47198981201192922811592/

2. http://blog.prosight.me/index.php/2011/07/741


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值