zoukankan      html  css  js  c++  java
  • linux升级gcc

    情景如下:

    • CentOS7, python3, 以及python3的pip(命名为pip3)

    • 执行 pip3 install sxtwl 时,报错: 省略N字......-std=c11 , 总之就是不支持-std=c11

    • 查阅资料,需要升级gcc,yum只到4.8.5版本, 只好编译安装, 目前最新已经9.x了, 我下载的6.1.0

    下载gcc源码

    yum -y install bzip2.x86_64   
    
    • 解压
    tar -jxvf gcc-6.1.0.tar.bz2
    

    下载供便利需要的依赖项

    cd gcc-6.1.0
    
    ./contrib/download_prerequisites 
    
    sudo yum install  gmp  gmp-devel  mpfr  mpfr-devel  libmpc  libmpc-devel
    

    建立一个目录供编译出的文件存放

    mkdir gcc-build-6.1.0
    
    cd gcc-build-6.1.0
    

    生成Makefile文件

    ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
    

    编译安装

    make -j4
    
    • -j4选项是make对多核处理器的优化,如果不成功请使用 make,这里我使用的make

    • (注意:此步骤如果能正常运营,则非常耗时,在我写这篇文章时,已经过40分钟了,还没完成。如果有错误的话,一般最多一两分钟就停下来了)

    • PS:如果提示还缺少其它包,请下载错误提示中包后,重新编译

    比如在这个过程中,我又执行了如下两个命令安装相关依赖
    yum install m4 
    yum install gcc-c++
    
    • 再次 make

    • make install

    • 重启 ,执行 gcc -v查看版本 已经6.1.0,可以使用了

    替换老版本gcc动态库

    • 源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。
    find / -name "libstdc++.so*"
    
    • 结果如下:
    /usr/lib/gcc/x86_64-redhat-linux/4.8.2/32/libstdc++.so
    /usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.so
    /usr/lib64/libstdc++.so.6
    /usr/lib64/libstdc++.so.6.0.19
    /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
    /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
    /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
    /usr/local/lib64/libstdc++.so.6.0.22
    /usr/local/lib64/libstdc++.so.6
    /usr/local/lib64/libstdc++.so
    /usr/local/lib64/libstdc++.so.6.0.22-gdb.py
    
    
    • 删除并备份原文件 (注意:每个人的文件路径可能稍有差异,但文件名是一样的 )
    mv /usr/lib64/libstdc++.so.6 /home/usr_lib64_libstdc++.so.6
    
    • 将新版本gcc动态库导入
    ln -s /usr/local/lib/libstdc++.so.6.0.22 /usr/lib64/libstdc++.so.6
    
    
    • 重新编译运行

    • 此时在执行 pip install sxtwl 就能正常安装了

  • 相关阅读:
    git remote: Support for password authentication was removed on August 13, 2021
    win10 安装vue 详解包括node.js、npm、webpack
    solr window 安装与启动
    solr 创建 core
    idea 创建 springboot 模块报错解决
    c# 设计模式篇
    javascript(DHTML)代码和客户端应用程序代码之间实现双向通信.
    委托,匿名方法,Lambda 表达式 的关系
    使用泛型实现单例模式提供者
    asp.net 文件编码问题
  • 原文地址:https://www.cnblogs.com/lz0925/p/10967882.html
Copyright © 2011-2022 走看看