C++11:SuSe Linux和Mac系统编译gcc 4.8.1

1、下载gcc 4.8.1源码包:

http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.1/gcc-4.8.1.tar.bz2


2、解压:

tar -jxvf gcc-4.8.1.tar.bz2


3、下载编译所需的依赖包:


这个步骤有两种方式完成:

a) 如果Linux有网络连接,直接这样:

cd gcc-4.8.1

./contrib/download_prerequisites

cd ..


b) 如果Linux没有网络连接(我主机和虚拟机是Host-only,不能联网,所以另外想办法),则用Windows上网下载这几个包:

ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2

http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2

http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz


按照gcc-4.8.1/contrib/download_prerequisites脚本里面的版本下载。


然后解压并移动到gcc-4.8.1下面:

tar -xjf gmp-4.3.2.tar.bz2

tar -xjf mpfr-2.4.2.tar.bz2

tar -xzf mpc-0.8.1.tar.gz

mv gmp-4.3.2 gcc-4.8.1/gmp

mv mpfr-2.4.2 gcc-4.8.1/mpfr

mv mpc-0.8.1 gcc-4.8.1/mpc


这样的做法好处是,不用单独编译gmp、mpfr和mpc三个包,放在gcc源码下面一起编译(事实上这也是gcc-4.8.1/contrib/download_prerequisites脚本的做法,个人感觉更简洁些)。


4、新建目录用于存放编译结果:

mkdir gcc-build-4.8.1


5、进入新目录,并执行configure命令,产生makefile:

cd gcc-build-4.8.1

../gcc-4.8.1/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib


具体选项不多解释,大家可以自己查看,我只用到c和c++,所以只编译这两种语言的编译器。


6、编译:

make -j4

开4个线程同时编译,要是有8核就更爽了~。

备注:我编译的时候遇到死循环,原因是机器的系统时间比较gcc 4.8.1文件的时间要早,编译的时候就出现死循环,编译不成功。


7、安装:

sudo make install


8、大功告成,检查版本:

g++ --version

g++ (GCC) 4.8.1

Copyright (C) 2013 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


还需要一个步骤更新一下libstdc++.so.6,否则可能会出现/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found的问题(编译运行:http://www.cplusplus.com/reference/functional/bind/的bind_example),更新步骤如下:

1. #cp ~/gcc-build-4.8.1/prev-i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.18 /usr/lib
2. #ln -sf /usr/lib/libstdc++.so.6.0.18 /usr/lib/libstdc++.so.6



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值