Ubuntu 10.04安装GCC 4.8.2

来源:互联网 发布:淘宝病假条暗语 编辑:程序博客网 时间:2024/06/05 10:40
    使用的Ubuntu10.04,因为GCC 4.8之后版本完整支持C++11规范,所以打算更新系统的编译器,下载源码后阅读相关安装文件,发现不够简洁明了,所以直接从网上找了一篇攻略,对照做了一下,基本成功,现将步骤整理如下:

    一、首先下载GCC包,我是从官方指定镜像网站上下载的,地址为http://mirror.hust.edu.cn/gnu/gcc/gcc-4.8.2/,文件名为gcc-4.8.2.tat.gz,

    1)  tar zxvf gcc-4.8.2.tar.gz
    2)  cd gcc-4.8.2
    3)  ./congigure

    此时会出现这样的错误:

    gcc configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+
    
    从错误中可以看出:GCC编译需要GMP, MPFR, MPC这三个库,我下载的版本为gmp-6.0.0a,mpfr-3.1.2和mpc-1.0.2。这三个包的下载地址为:http://gmplib.org/,

http://www.mpfr.org/,http://www.multiprecision.org/。

  
    二、安装GMP时出现错误:(我系统已经自带m4,版本为1.4.13,所以跳过该步骤,查看方法为在终端输入m4 --version)

    No usable m4 in $PATH or /usr/5bin (see config.log for reasons).

    由此可以看出是缺少M4文件。可以去这里下载:http://ftp.gnu.org/gnu/m4/。我这里下载了m4-1.4.1.tar.gz:

    1)  tar zxvf m4-1.4.1.tar.gz
    2)  cd m4-1.4.1
    3)  ./configure
    4)  make
    5)  make check (强烈建议检查,确保正确)
    6)  sudo make install (需要root权限)

    三、有了M4就可以装别的了。由于MPFR和MPC都依赖于GMP包,所以首先安装GMP。

    1)  tar jxvf gmp-6.0.0.tar.bz2
    2)  cd gmp-6.0.0
    3)  ./configure
    4)  make
    5)  make check (检查后发现有错误,直接无视,以后都这样处理)
    6)  sudo make install (需要root权限)

    四、安装MPFR

    1)  tar jxvf mpfr-3.1.2.tar.bz2
    2)  cd mpfr-3.1.2
    3)  ./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib
    4)  make
    5)  make check
    6)  sudo make install (需要root权限)

    五、安装MPC

    1)  tar zxvf mpc-1.0.2.tar.gz
    2)  cd mpc-1.0.2
    3)  ./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib
    4)  make
    5)  ldconfig -v (有错误,直接无视) 
    6)  make check
    7)  sudo make install (需要root权限)

    六、这几个库的默认位置是/usr/local/include和/usr/local/lib,GCC编译时可能会找不到这三个库,需要确认库位置是否在环境变量LD_LIBRARY_PATH中,查看环境变量内

容可用命令:

    $echo $LD_LIBRARY_PATH

    设置该环境变量命令如下:

    $export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"

    ****************************************************************

    备注:

    我按照上述步骤编译还是失败,后将其改为PATH方式成功,具体步骤为,在终端输入:

    $gedit /etc/profile (该文件是否合适还有待斟酌,关于Ubuntu中设置环境变量对应文件的具体详情请查阅其它资料。)

    在打开的文件尾部添加export PATH="$PATH:/usr/local/lib",保存退出,在终端输入:

    $source /etc/profile (该文件是否合适还有待斟酌,关于Ubuntu中设置环境变量对应文件的具体详情请查阅其它资料。)

    ****************************************************************
    
    七、现在开始重新安装GCC

    1) tar xvf gcc-4.8.2.tar.gz
    2) cd gcc-4.8.2
    3) ./configure
    4) make
    5) make check
    6) sudo make install

    经过较长时间的等待,终于编译安装成功。


    八、测试环境是否成功

    创建test.cpp文件,内容如下:

    #include <iostream>
    #include <cstdlib>
    #include <algorithm>   // sort函数模板、for_each函数模板
    #include <functional>  // function类模板

    using namespace std;

    #ifndef _countof
    #define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0]))
    #endif

    int main ( )
    {
        int a[] = {1,2,5,9,52,6,3,14};
        function <bool (const int & , const int &)> compare;
        auto output = [](int n)->void{ cout << n << endl; };
        // C++11标准中, auto 关键字新义,任意类型,类型由初始化表达式确定
        // “[](int n)->void{ cout << n << endl; }”是Lambda表达式

        cout << "升序排序" << endl;
        compare = []( const int & a , const int & b )->bool { return a < b; };
        sort( a, a+_countof(a), compare  );
        for_each( a, a+_countof(a), output );
        cout << endl;

        cout << "降序排序" << endl;
        compare = []( const int & a , const int & b )->bool { return b < a; };
        sort( a, a+_countof(a), compare  );
        for_each( a, a+_countof(a), output );
        cout << endl;

        return EXIT_SUCCESS;
    }

    编译命令:

    gcc -std=c++11 -lstdc++ -o test test.cpp

    生成test可执行程序,运行,打印数字排列,成功!

0 0
原创粉丝点击