编译它真麻烦啊。。耗费了我一下午。。
我是ubuntu10.10环境的。内置的gcc版本很老了,好像是4.2吧。源里又没有高版本的,于是自己编译了。

准备

下载gcc:点我打开 //源,找个最快的。下你想要的版本
下载编译要用的库:m4-1.4.16,gmp-4.3.2,mpfr-2.4.2和mpc-0.8.1 版本应该要以上吧,我是下这3个的
地址:m4:点击打开链接           另外3个:点击打开链接到最后make check时(只有gcc)还需要安装一个(听说不用check也行,就可以不用装了)   autogen,可以直接在源里搜到的。

编译(摘自http://blog.csdn.net/zyysql/article/details/6036145和http://marxistprogrammer.blog.163.com/blog/static/47198981201192922811592)

  • 先编译m4(不编译它GMP编译不了)

    1. tar zxvf m4-1.4.1.tar.gz
    2. cd m4-1.4.1
    3. ./configure
    4. make
    5. make check #强烈建议检查,确保正确
    6. make install #需要root,建议在root中安装
  • 后编译GMP(由于MPFR和MPC都依赖于GMP包,所以首先安装GMP)

    1. tar jxvf gmp-4.3.2.tar.bz2
    2. cd gmp-4.3.2
    3. ./configure
    4. make
    5. make check
    6. make install
  • 再就是MPFR

    1. tar jxvf mpfr-2.4.2.tar.bz2
    2. cd mpfr-2.4.2
    3. ./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib
    4. make
    5. make check
    6. make install
  • 安装MPC

    1. tar zxvf mpc-0.8.1.tar.gz
    2. cd mpc-0.8.1
    3. ./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib
    4. make
    5. ldconfig -v#(出现:error while loading shared libraries: libmpfr.so.1: cannot open shared objec,可以自己去man ldd 和ldconfig)
    6. make check
    7. make install

到这里就可以编译gcc了(前面几个库的默认位置是/usr/local/include和/usr/local/lib,GCC编译时可能会找不到这三个库,需要确认库位置是否在环境变量LD_LIBRARY_PATH中)

  • 查看环境变量内容可以用命令
    echo $LD_LIBRARY_PATH
  • 设置该环境变量命令如下:
    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"

现在开始安装GCC

  1. tar xvf gcc-4.5.1.tar.gz
  2. cd gcc-4.7.3
  3. ./configure --prefix=/usr/local/gcc-4.7.3 --enable-languages=c,c++
  4. #gcc包含的编译器很多,我只想要c跟c++编译器。如果提示缺少什么包,从源里安装就行了,我不缺。
  5. #之所以安装到/usr/local/gcc-4.7.3,而不是默认的/usr/local下,是因为gcc没有提供make uninstall的功能,放在一个目录下方便日后删除。
  6. make #(这个过程较长,据说是编译了三次,第一次是用现有的老版本编译4.7的源代码得到老版本编译的 4.7,然后再用这个老版本编译的4.7编译
  7. #4.7的源代码得到4.7编译的4.7编译的4.7,然后再用这个老版本编译的4.7编译的4.7编译4.7的源代码得到最终的老版本编译的4.7编译的4.7编
  8. #译的4.7;ok,再用最后得到的这个4.7编译标准库)
  9. make check#(想check的就装上面提到的吧,不check也能装的)
  10. sudo make install

经过较长时间(我等了近四个小时,机子差,加上我又在浏览等行为)等待就可以编译完成。

设置环境变量的话,在~/.profile最后添加一行

PATH="/usr/local/gcc-4.7.3/bin:$PATH"

用g++ -v看看是不是4.7.3了?恭喜你!

编译gcc4.7.3 其他版本的应该也可以的更多相关文章

  1. 在centOS7.2上编译gcc4.4.7

    1.前置 首先,可以参考我的上篇文章,在centOS7.2上编译gcc4.1.2,过程基本一致,这里只对可能遇到的错误情况进行说明. 2.安装texinfo4.8 我的centos7.2版本,自带的是 ...

  2. cmake编译opencv时指定cuda版本

    之前有网友提问说,基于cmake编译时如果切换cuda版本,比如我同时装了cuda8和cuda9,opencv总是找到cuda9,我想用cuda8怎么办?实际上,手头上要配置的工程是基于opencv3 ...

  3. VS2010编译OpenSSL(两个版本)

    第一个版本: 编译工具 VS2010 OpenSSL版本 openssl-1.0.0a 下载 OpenSSL http://www.openssl.org/ 下载 from http://www.ac ...

  4. 使用自编译的Emacs26.0.50build10版本,helm报错(已解决)

    使用自编译的Emacs26.0.50build10版本,helm报错(已解决) */--> code {color: #FF0000} pre.src {background-color: #0 ...

  5. 重新编译安装gcc-4.1.2(gcc版本降级)之TFS安装

    wget http://gcc.parentingamerica.com/releases/gcc-4.1.2/gcc-4.1.2.tar.gz tar -zxfv gcc-4.1.2.tar.gz ...

  6. Ubuntu 14.04 LTS 下升级 gcc 到 gcc-4.9、gcc-5 版本

    如果没记错的话,阿里云ECS上的Ubuntu也是LTS版本. 如果还在使用较旧版本的Ubuntu,或者是Ubuntu LTS,那么我们是很难体验新版gcc的.怎么办呢? 我们或许可以自己去编译用旧版本 ...

  7. 编译GCC4.8.2

        公司的机器上默认是GCC4.4.6,为了完整的体验C++11,可以自己编译一个GCC4.8.2出来(自带了更高版本的glibc). 以下是备忘. 1.下载GCC源码以及依赖库 gmp ftp: ...

  8. CentOS 6.6x64下编译gcc-4.7.4

    最近使用老版本的gcc发现一些问题,于是想尝试升级. 看了一些教程之后进行尝试,发现各类教程均会有一些小问题,于是在此记录一下本人的过程. 编译过程中参考的文章有如下几篇,在此表示感谢: http:/ ...

  9. 编译gcc4.4.6与ICE遇到的几个问题

    1.遇错./.libs/libgcj.so: undefined reference to `__cxa_call_unexpected' 解决:d.错误码:"/.libs/libgcj.s ...

随机推荐

  1. linux开机启动服务和chkconfig使用方法(自定义服务路径启动)

    服务概述在linux操作系统下,经常需要创建一些服务,这些服务被做成shell脚本,这些服务需要在系统启动的时候自动启动,关闭的时候自动关闭.将 需要自动启动的脚本/etc/rc.d/init.d目录 ...

  2. Linux的Cgroup<实例详解>

    为什么要有cgroup Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源.也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等.于是就 ...

  3. SCOPE_IDENTITY的作用

    SCOPE_IDENTITY返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值.一个作用域就是一个模块——存储过程.触发器.函数或批处理.因此,如果两个语句处于同一个存储 ...

  4. Telegram

    官网:https://www.telegram.org/ GitHub:https://github.com/telegramdesktop/tdesktop

  5. 惊魂web应用宕机记一次网站的紧急恢复

    这次网站的故障出现的比较突然,没有任何防备,有种突如其来的感觉.这是一台阿里云服务器,采用wdcp的nginx+apache+mysql的方式运行.一位同事在对web目录进行压缩后,由于web目录有很 ...

  6. iOS 中constraint 不等于约束和低优先级约束使用的简单体会

    看了些文章发现,在使用constraint时,不等于约束往往是和低优先级约束成对使用的,这样才能实现他们的效果. 看看例子 下面是在3.5存屏幕下的效果 图1,竖屏,在满足>=50的前提下,可以 ...

  7. php中static静态关键字的使用

    php中除了常规类和方法的使用,访问控制之外,还有静态关键字static,静态变量可以是局部变量也可以是全局变量,当一个程序段执行完毕时,静态变量并没有消失,它依然存在于内存中,下次在定义时还是以前的 ...

  8. Android 模拟器genymotion安装,eclipse 插件

    genymotion是一款号称速度最快性能最好的android模拟器,它基于Oracle VM VirtualBox.支持GPS.重力感应.光.温度等诸多传感器:支持OpenGL 3D加速:电池电量模 ...

  9. 如何在Ubuntu下安装”.deb“、”.bin“、”.tar.gz“、”.tar.bz2“格式的软件包!

    今天在Ubuntu11.10中安装Google chrome浏览器是遇到了问题,下载好的“.deb”格式的安装文件google-chrome-stable.deb双击后或者右键快捷菜单选择 Synap ...

  10. myeclipse6.5中使用Alt+/不自动提示的修改

    转载自:http://www.cnblogs.com/zhangnanblog/archive/2011/11/10/2244960.html 最近把MyEclipse8.5降到了MyEclipse6 ...