【转载】转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://www.blogbus.com/huangw10-logs/182474992.html

周末折腾了一下午加一夜,终于弄明白了!失败的原因是网上着的帖子很多都是互相复制,其中因为每个人的设置路径之类的不一样,作者复制时没有注意,因此记录如下,关键位置尽量解释清楚。

首先要明白先后次序,m4—>gmp—>mpfr—>mpc

1、准备工作(此部分是安装三个库的先决条件) :

先安装m4,输入 sudo aptitude install build-essential m4 ,此时有可能提示没安装aptitude,如果没有,根据提示,输入 sudo apt-get install aptitude 就OK

2、安装gmp、mpfr和mpc,都可以在 ftp://gcc.gnu.org/pub/gcc/infrastructure/ 中下载,我这里分别下载gmp4.3.2,mpfr2.4.2和mpc0.8.1, 之后切换到root用户(sudo -i) ,此为以下步骤的前提!

在 /usr/local/下分别建立三个文件夹

cd /usr/local/

mkdir gmp432

mkdir mpfr242

mkdir mpc081

(1)安装gmp,可以提前 把下载的三个库的压缩包分别放到相应的文件夹下

cd gmp432                        *这个文件夹可理解为是将gmp安装在这里

bunzip2 gmp-4.3.2.tar.bz2

tar xf gmp-4.3.2.tar           *生成gmp-4.3.2文件夹(这个文件夹可理解为是安装文件所在的目录)

cd gmp-4.3.2

./configure --prefix=/usr/local/gmp432

*--prefix选项代表要将该库安装在哪里,我装在/usr/local/gmp432目录下,后面的安装都会用到这个选项。

make                       *如果出错,重新configure的话,先make distclean清除make信息后再重新configure

make check              * 在编译的时候,最后没提示什么错误再往下进行, 建议每一次make之后都运行这个命令

make install              *装好后/usr/local/gmp432/目录下有三个文件夹

make clean

(2)安装mpfr,

cd mpfr242

cd mpfr-2.4.2

./configure --prefix=/usr/local/mpfr242 --with-gmp=/usr/local/gmp432

*注意这个地方的路径匹配,gmp安装在哪这个地方就要写哪,因为是依存关系!建议统一安装在gmp432、

mpfr242、mpc081这三个地方

make

make check

make install

(3)安装mpc,

cd mpc081

cd mpc-0.8.1

./configure --prefix=/usr/local/mpc081 --with-gmp=/usr/local/gmp432 --with-mpfr=/usr/local/mpfr242

*同上,注意路径!!!

make

make check

make install

3、安装gcc-4.4.5

在/usr/local/下新建gcc445文件夹,之后在http://gcc.gnu.org/index.html 上下载gcc压缩包,放在/usr/local/gcc445下,解压缩后

cd gcc-4.4.5

./configure --prefix=/usr/local/gcc445 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp432 --with-mpfr=/usr/local/mpfr242 --with-mpc=/usr/local/mpc081

*其他帖子是建立个临时文件夹,上面的语句开头有些细微差别,这个是我自己悟出来的,也可以参考

http://www.comdyn.cn/from-web/68-server-setup/164-centos-48-gcc450.html 按照他的方法,但是要

注意路径。

为保险起见,需要在环境变量LD_LIBRARY_PATH添加前面三个库的位置,键入以下命令:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc081/lib:/usr/local/gmp432/lib:/usr/local/mpfr242/lib                                     *注意路径!

make                                                   *注意检查有没有错误,过程很慢,1-2个小时!

make check                                          *如果make没有问题,这一步可以省略,因为时间很久

make install

保留旧版的gcc,建立符号链接

cd /usr/bin

ln -s /usr/local/gcc445/bin/gcc gcc44

ln -s /usr/local/gcc445/bin/g++ g44++

最后,在/etc/bashrc中(有帖子说是在/etc/profile中,这个我不确定)增加下面两行代码:

LD_LIBRARY_PATH=:/usr/local/mpc081/lib:/usr/local/gmp432/lib:/usr/local/mpfr242/lib:/usr/local/gcc445/lib

export LD_LIBRARY_PATH

保存重启系统后,就可以使用新装的gcc了,enjoy!

最后看到一个帖子提到以上命令可以写个shell文件,installgcc.sh,批处理执行,great idea!记下网址,有空可以试试:http://bitterliquor.blog.hexun.com/65259015_d.html

gcc降版本方法 - [学习]的更多相关文章

  1. lfs(systemd版本)学习笔记-第2页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd)学习笔记-第1页 的地址:https://www.cnblogs.com/renren-study-no ...

  2. lfs(systemv版本)学习笔记-第2页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv)学习笔记-第1页 的地址:https://www.cnblogs.com/renren-study-no ...

  3. [Linux Kernel]查看CentOS版本方法

    查看CentOS版本方法  有以下命令可以查看:   # lsb_release -a LSB Version:    :core-3.1-ia32:core-3.1-noarch:graphics- ...

  4. lfs(systemd版本)学习笔记-第3页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd)学习笔记-第2页 的地址:https://www.cnblogs.com/renren-study-no ...

  5. blfs(systemd版本)学习笔记-总页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd版本)学习笔记:https://www.cnblogs.com/renren-study-notes/p/ ...

  6. lfs(systemd版本)学习笔记-第1页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一名linux爱好者,记录构建Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习lfs,用博客 ...

  7. lfs(systemv版本)学习笔记-第4页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv版本)学习笔记第3页:https://www.cnblogs.com/renren-study-notes ...

  8. blfs(systemv版本)学习笔记-总页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv版本)学习笔记:https://www.cnblogs.com/renren-study-notes/p/ ...

  9. lfs(systemv版本)学习笔记-第3页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv版本)学习笔记-第2页的地址:https://www.cnblogs.com/renren-study-n ...

随机推荐

  1. hdu3076ssworld VS DDD 概率dp

    //ssworld VS DDD 两个人有血量值 hp1 , hp2  //两人掷骰子得到每一点的概率已知 //ssword赢的概率 //dp[i][j]  表示有第一个人血量为i.第二个人的血量为j ...

  2. boost::serialization 用基类指针转存派生类(错误多多,一波三折)

    boost::serialization 也支持c++的多态,这样我们就能够通过使用基类的指针来转存派生类, 我们接着上一篇( boost::serialization(2)序列化基类 )的样例来看: ...

  3. J2SE核心开发实战(二)——字符串与包装类

    字符串与包装类 一.实验简单介绍 在本章.我们将学习一些用于处理字符串的API以及包装类的相关知识. 本章知识点 字符串API 包装类及其应用 二.认识字符串类 1. 什么是字符串类 Java字符串类 ...

  4. Activity左边滑出,右边滑入的动画切换

    Activity左边滑出,右边滑入的动画切换 转载请注明出处:http://blog.csdn.net/u012301841/article/details/46920809 大家都知道Android ...

  5. dsp端编译异常之max和min未定义

    (1)在函数之前 声明__stdcall 时 在linux 端或dsp端 linux 之前的加上宏定义 __stdcall是MS的编译器使用的只需要#define __stdcall定义一个宏就可以 ...

  6. rtsp 播放器

    http://blog.csdn.net/niu_gao/article/details/7753672 /********************************************** ...

  7. Array types are now written with the brackets around the element type问题的解决方法

    在xcode6.1中来编写swift空数组时.出现的的这个问题,依照官方 Swift 教程<The Swift Programming Language>来写 let emptyArray ...

  8. Session 钝化机制

  9. A JavaScript library for reading EXIF meta data from image files.

    exif-js/exif-js: JavaScript library for reading EXIF image metadata https://github.com/exif-js/exif- ...

  10. 逻辑运算符,if、swtch语句(java基础知识三)

    1.逻辑运算符的基本用法 * A:逻辑运算符有哪些 &(逻辑与) |(逻辑或) !(逻辑非) ^(逻辑异或) &&(短路与) ||(短路或) * 注意事项: * a:逻辑运算符 ...