zoukankan      html  css  js  c++  java
  • elementary os 0.4.1下编译GCC-7.1源码并安装成功

    参考文章:http://www.2cto.com/os/201402/281131.html

      前几天为了图个新鲜,安装了elementary os 0.4.1,的确是一股清流,可惜的是gcc版本觉得有点老了点,这不刚刚gcc 7.1也出来了,就想试试,特记录如下:

      准备必要的系统环境:(升级系统到最新,安装必要的工具)

      sudo apt-get update                             #升级系统到最新
      sudo apt-get install gcc g++ gawk m4 gcc-multilib binutils lzip

    mkdir gcc_builder_7.1 && gcc_builder_7.1

    #下载源代码和必须的3个库
    # gcc : http://gcc.gnu.org/mirrors.html
    # gmp : https://gmplib.org/
    # mpfr : http://www.mpfr.org/mpfr-current/#download
    # mpc : http://www.multiprecision.org/index.php?prog=mpc&page=download
    # 下载三个必须的库gmp、mpfr、mpc;根据依赖关系:mpfr依赖于gmp, mpc依赖于gmp和mpfr
    # 下载顺序无关紧要,安装的顺序必须是先安装gmp,再安装mpfr,然后安装mpc,最后安装gcc,由于文件是相互依赖的,千万不要弄错了顺序了。

    #获取必要的文件
    # gmp
    wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.lz
    # mpfr
    wget http://www.mpfr.org/mpfr-current/mpfr-3.1.5.tar.xz
    # mpc
    wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
    # gcc-7.1
    wget http://mirrors.webhostinggeeks.com/gcc/releases/gcc-7.1/gcc-7.1.tar.bz2

    #解压文件,使用对应的工具解压到对应的目录,最好不要有版本号
    # 解压 gmp
    lzip -d gmp-6.1.2.tar.lz
    tar -xvf gmp-6.1.2.tar -C gmp
    # 解压mpfr
    tar -Jxvf mpfr-3.1.5.tar.xz -C mpfr
    # 解压mpc
    tar -zxvf mpc-1.0.3.tar.gz -C mpc
    # 解压GCC
    tar -jxvf gcc-7.1.tar.bz2 -C gcc

    # 编译gmp库,安装到/usr/gcc_7_1目录,以x86_64-linux-gnu内核
    cd gmp                              #进入gmp源码目录
    mkdir build && cd build             #准备编译目录
    ../configure --prefix=/usr/gcc_7_1 --build=x86_64-linux-gnu     #配置编译选项
    make                                #编译
    sudo make install                   #编译安装

    # 编译mpfr库,安装到/usr/gcc_7_1目录,以x86_64-linux-gnu内核,以gmp库
    cd ../../mpfr                       #进入mpfr源码目录
    mkdir build && cd build             #准备编译目录
    ../configure --build=x86_64-linux-gnu --prefix=/usr/gcc_7_1 --with-gmp=/usr/gcc_7_1     #配置编译选项
    make                                #编译
    sudo make install                   #编译安装

    # 编译mpc库,依赖gmp、mpfr,内核...
    cd ../../mpc                        #进入mpc源码目录
    mkdir build && cd build             #准备编译目录
    ../configure --build=x86_64-linux-gnu --prefix=/usr/gcc_7_1 --with-gmp=/usr/gcc_7_1 --with-mpfr=/usr/gcc_7_1                            #配置编译选项
    make                               #编译
    sudo make install                  #编译安装

    #编译GCC源码
    cd ../../                           #进入gcc源码目录
    mkdir build && cd build             #准备编译目录
    export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/
    export C_INCLUDE_PATH=/usr/include/x86_64-linux-gnu
    export CPLUS_INCLUDE_PATH=/usr/include/x86_64-linux-gnu
    #下一行是配置编译环境
    ../gcc/configure --build=x86_64-linux-gnu --prefix=/usr/gcc_7_1 --with-gmp=/usr/gcc_7_1 --with-mpfr=/usr/gcc_7_1 --with-mpc=/usr/gcc_7_1 --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib --program-suffix=-7.1
    make                                                                            #编译

    #make -jN,可以调整n的数值,例如:make -j4,如果编译出错,执行make clean后直接make,只是编译过程会比较慢。
    sudo ln -s /usr/lib/x86_64-linux-gnu/ /usr/lib64                                #链接库文件
    sudo make install                                                               #编译安装
    export PATH=/usr/gcc_7_1/bin:$PATH                                              #将gcc 7.1添加到系统路径,或者直接编辑home目录下.bashrc文件,在最后添加 export PATH=/usr/gcc_7_1/bin:$PATH../gcc/configure --build=x86_64-linux-gnu --prefix=/usr/gcc_7_1 --with-gmp=/usr/gcc_7_1 --with-mpfr=/usr/gcc_7_1 --with-mpc=/usr/gcc_7_1 --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib --program-suffix=-7.1

    # 调用编译器测试
    gcc-7.1  -v                         #结果如下:
    使用内建 specs。
    COLLECT_GCC=gcc-7.1
    COLLECT_LTO_WRAPPER=/usr/gcc_7_1/libexec/gcc/x86_64-linux-gnu/7.1.0/lto-wrapper
    目标:x86_64-linux-gnu
    配置为:../gcc/configure --build=x86_64-linux-gnu --prefix=/usr/gcc_7_1 --with-gmp=/usr/gcc_7_1 --with-mpfr=/usr/gcc_7_1 --with-mpc=/usr/gcc_7_1 --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib --program-suffix=-7.1
    线程模型:posix
    gcc 版本 7.1.0 (GCC)

    #就表明安装成功

    #删除不需要的源代码目录及文件,压缩包如果没有用处,也可以删除
    cd ../../
    rm -rf gcc_builder_7.1

    # 其他配置说明,在配置之前需明白配置选项含义,主要如下:
        --target= 生成的目标系统 #在编译主机用的不需要配置这个
        --build= 编译的机器的类型 #这个可以说是必须要修改的
        --host= 主机的类型 #这个参数不需要用到
        --prefix= 安装的目录 #这个一定要配置
        --enable-languages= 这个是配置生成的程序,支持什么语言的编译器 #这个要配置,防止生成的文件成多。参数过多造成编译不通过
        --disable-werror 这个是关闭提醒 #不一定需要。
        --enable-ld=[yes,no] 这个是联合binutils编译的时候用到的。 #如果只编译这个GCC.这个可以省略
        --enable-gold=[yes,no] 这个是联合binutils编译的时候用到的。 #只编译GCC 不需要用到这个。
        --program-suffix= 这个是程序的后序 #为了区别与系统自带的gcc建议加上这个
        --program-transform-name= 这个是用来生成个性化的 gcc 命名规则。#如果使用了这个,可以不用上面的--program-suffix 这个选项
        --disable-multilib 关闭使用跨平台的库 #建设使用这个选项

  • 相关阅读:
    Vue 面试题汇总
    SSIS 通过OData源连接Dynamic 365 Online
    SQL Server AlwaysOn
    SQL Server AlwaysOn
    SQL Server AlwaysOn
    SQL Server AlwaysOn
    OGG同步ORACLE至SQLSERVER(转)
    Power BI Online管理数据源
    SSRS 动态设置分组依据及行组个数
    查看Reporting Services服务器中用户查询报表历史记录
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/6917244.html
Copyright © 2011-2022 走看看