网站首页 > 博客文章 正文
可能遇到的问题:
1、/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found问题2、编译报错:error: 'const char* libc_name_p
[INFO ] ================================================================= [INFO ] Installing final gcc compiler [EXTRA] Configuring final gcc compiler [EXTRA] Building final gcc compiler [ERROR] cfns.gperf:101:1: error: 'const char* libc_name_p(const char*, unsigned int)' redeclared inline with 'gnu_inline' attribute [ERROR] make[3]: *** [cp/except.o] Error 1 [ERROR] make[2]: *** [all-gcc] Error 2 [ERROR] make[1]: *** [all] Error 2 [ERROR]
1、安装gcc
由于 Linux 操作系统的自由、开源,在其基础上衍生出了很多不同的 Linux 操作系统,如 CentOS、Ubuntu、Debian 等。这些 Linux 发行版中,大多数都默认装有 GCC 编译器(版本通常都较低)。
1.1、查看是否含有gcc及gcc版本
[root@localhost ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/6.5.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../../gcc-6.5.0/configure --prefix=/usr/local --enable-checking=release --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 6.5.0 (GCC)
[root@localhost ~]#
可以看到,系统中包含了gcc且版本为6.5.0,如果没有gcc,可以通过下面命令来进行安装
1.2、快速安装gcc
yum -y install gcc
yum -y install gcc-c++
通过如上命令得到的gcc通常版本较低。
2、升级gcc
升级gcc需要在系统中包含一个低版本的gcc
2.1、下载gcc源码包并解压缩
下载地址:gnu-gcc安装包下载_开源镜像站-阿里云,可以手动下载,也可以通过wget直接下载到服务器上
# 进入目录
cd /usr/local
# 下载源码
wget https://mirrors.aliyun.com/gnu/gcc/gcc-10.5.0/gcc-10.5.0.tar.gz
# 解压缩
tar -zxvf gcc-10.2.0.tar.gz
# 进入gcc源码目录
cd gcc-10.5.0/
2.2、下载编译依赖项
./contrib/download_prerequisites
执行完毕后,可以发现gcc-10.5.0的目录中多了gmp、isl、mpc、mpfr,如果没有这些依赖包,则不能进行下面的操作。
2.3、新建gcc-bulid目录(与gcc-10.5.0同级)并进入该目录中
mkdir gcc-build
cd gcc-build/
2.4、生成Makefile文件
../gcc-10.5.0/configure --prefix=/usr/local --enable-checking=release --enable-languages=c,c++ --disable-multilib
这时候如果出现报错:
checking for the correct version of gmp.h... no configure: error: Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
解决办法:执行以下命令
yum -y install gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel
再次运行命令就成功了
../gcc-10.5.0/configure --prefix=/usr/local --enable-checking=release --enable-languages=c,c++ --disable-multilib
2.5、开始编译
make
注意:编译时间较长,请选择适当的时间进行此操作。
GCC高版本编译低版本GCC报错:
[INFO ] =================================================================
[INFO ] Installing final gcc compiler
[EXTRA] Configuring final gcc compiler
[EXTRA] Building final gcc compiler
[ERROR] cfns.gperf:101:1: error: 'const char* libc_name_p(const char*, unsigned int)' redeclared inline with 'gnu_inline' attribute
[ERROR] make[3]: *** [cp/except.o] Error 1
[ERROR] make[2]: *** [all-gcc] Error 2
[ERROR] make[1]: *** [all] Error 2
[ERROR]
解决办法,修改要编译的GCC代码,参考链接如下
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=ec1cc0263f156f70693a62cf17b254a0029f4852
2.6、安装
make install
2.7、重启
2.8、验证
[root@localhost ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/10.5.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../../gcc-10.5.0/configure --prefix=/usr/local --enable-checking=release --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 10.5.0 (GCC)
[root@localhost ~]#
3、依赖新的版本
3.1 、进入/usr/lib64目录
cd /usr/lib64
3.2、拷贝libstdc++.so.6.0.28到系统/usr/lib64目录下
cp /usr/local/lib64/libstdc++.so.6.0.28 .
3.3、修改文件权限
chmod 755 libstdc++.so.6.0.28
3.4、备份原libstdc++.so.6软连接
mv libstdc++.so.6 libstdc++.so.6-bak
3.5、创建新的软连接,连接到新的库
ln -s libstdc++.so.6.0.28 libstdc++.so.6
3.6、验证依赖是否更新
ll libstd*
[root@localhost lib64]# ll libstd*
lrwxrwxrwx. 1 root root 19 Jul 14 20:05 libstdc++.so.6 -> libstdc++.so.6.0.22
-rwxr-xr-x. 1 root root 995840 Sep 29 2020 libstdc++.so.6.0.19
-rwxr-xr-x. 1 root root 11541760 Jul 14 20:04 libstdc++.so.6.0.22
-rwxr-xr-x. 1 root root 16833120 Jul 14 04:46 libstdc++.so.6.0.28
lrwxrwxrwx. 1 root root 19 Feb 9 2022 libstdc++.so.6-bak -> libstdc++.so.6.0.19
lrwxrwxrwx. 1 root root 19 Jul 14 04:48 libstdc++.so.6-bak.bak -> libstdc++.so.6.0.28
[root@localhost lib64]#
3.7、验证新的库是否生效
strings /usr/lib64/libstdc++.so.6|grep GLIBCXX
[root@localhost lib64]# strings /usr/lib64/libstdc++.so.6|grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
jdk下载:Index of java-local/jdk
?
猜你喜欢
- 2024-09-12 亚马逊自研Graviton4芯片实测,比英特尔至强8488C快5%
- 2024-09-12 Linux Ubuntu系统部署C++环境的方法
- 2024-09-12 加上一个关键字,数组遍历耗时从7.8秒降到1.4秒,这是为什么呢?
- 2024-09-12 ubuntu下安装CUDA,cuDNN及pytorch-gpu版本的步骤教程
- 2024-09-12 Ubuntu 20.04 CUDA&cuDNN安装方法
- 2024-09-12 手把手教你在 Ubuntu16.04 安装 GPU 驱动 + CUDA9.0 + cuDNN7
- 2024-09-12 ubuntu 19.10有什么新特性?(ubuntu 20.10 新特性)
- 2024-09-12 Ubuntu 24.10 开发代号确定为 "Oracular Oriole"
- 2024-09-12 Ubuntu 20.10迎来最后一个Beta测试版本
- 2024-09-12 如何在Linux系统上安装最新版本的VMware
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 357℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)