zoukankan      html  css  js  c++  java
  • linux(Centos)下编译安装gcc4.8.2

    欢迎转载。转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/46811159


    近期要用到c++ 11,所以没办法仅仅得把那台centos6.6的gcc4.4.7升级一下。

    gcc编译器已经出到5.1了,可是我对最新的版本号并没有特别大的兴趣。更喜欢稳定性的版本号。

    gcc4.8.1 是第一个全然支持C++11 的编译器,我这边装的是4.8.2.


    一、获取gcc4.8.2包并解压缩:

    下载链接:http://gcc.skazkaforyou.com/releases 

    里面有gcc全部的版本号,自行下载。

    也能够选择: wgethttp://gcc.skazkaforyou.com/releases/gcc-4.8.2/gcc-4.8.2.tar.gz


    然后解压缩: tar -zxvf gcc-4.8.2.tar.gz


    二、安装依赖库:
    进入gcc-4.8.2文件夹,运行./contrib/download_prerequisities脚本会自己主动下载三个依赖库别为gmp-4.3.2mpfr-2.4.2mpc-0.8.1

    或者自己手动下载:
    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


    然后就是机械的安装过程了。


    cd gmp
    ./configure --prefix=/usr
    sudo make && make install
    
    
    cd mpfr
    ./configure --prefix=/usr
    sudo make && make install
    
    
    cd mpc
    ./configure --prefix=/usr
    sudo make && make install



    注:g++ -v 能够看到系统原有的gcc的安装文件夹 即--prefix变量的值(通常是/user或者/user/local)。你自己安装的时候配置跟它一样是最好的了。这样最方便。

    假设编译的时候是自己定义指定的安装路径,那你就要把lib文件夹放到ld.so.conf里面并运行ldconfig了。

    假设还不行,在编译 gcc 时须要加上以下的选项:
    --with-mpc=MPC的安装文件夹
    --with-mpfr=MPFR的安装文件夹
    --with-gmp=GMP的安装文件夹


    三、编译安装GCC4.8.2
    ./configure --prefix=/usr --enable-threads=posix --disable-checking --enable-languages=c,c++ --disable-multilib 
    sudo make && make install


    gcc的參数配置:
    --prefix                  //默认gcc的安装文件夹。最好跟原有的gcc的安装文件夹一致
    --disable-checking        //生成的编译器在编译过程中不做额外检查,也能够使用--enable-checking=xxx来添加一些检查;
    --enable-languages        //指定gcc能编译哪些语言的文件。每种语言用逗号分隔, 比如 c,c++,java

    --disable-multilib        //默认gcc能在32位系统上将代码编译成64位程序,或者在64位系统上编译成32位程序,假设加上这个编译选项则表示关闭这个gcc的交叉编译功能。


    注:假设你不是装在/usr 或者 /user/local 那么链接到相应的文件夹下即可了。


    四、測试成功

    查看gcc -v发现已经成功更新到4.8.2

    运行一个演示样例:

    #include <iostream>
    #include <vector>
     
    int main()
    {
    	int arr[] = {2,4,6,8,10};
    	size_t count=sizeof(arr)/sizeof(arr[0]);
    	std::vector<int> vec(arr,arr + count);
    	//for (std::vector<int>::iterator iter = vec.begin(); iter != vec.end(); ++iter)
    	for (auto iter = vec.begin(); iter != vec.end(); ++iter)
    	{
    		std::cout<<*iter<<std::endl;
    	}
    	return 0;
    }



    g++ cpp11.cpp -o cpp11-std=c++11

    假设不加-std=c++11就会编译错误,由于没办法识别auto iter,这是c++11才有的语法。

  • 相关阅读:
    改造vant日期选择
    css3元素垂直居中
    npm综合
    (转)网页加水印方法
    Mac下IDEA自带MAVEN插件的全局环境配置
    隐藏注册控件窗口
    High performance optimization and acceleration for randomWalk, deepwalk, node2vec (Python)
    How to add conda env into jupyter notebook installed by pip
    The Power of WordNet and How to Use It in Python
    背单词app测评,2018年
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6768959.html
Copyright © 2011-2022 走看看