服务器centos 环境升级gcc版本

低版本不支持c++11

CentOS 6.X 升级GCC G++ (以GCC/G++版本v6.3.0为例)

1、 获取安装包并解压,本人喜欢用backup作为下载的目录

mkdir /backup

cd /backup

wget https://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2

tar -jxvf gcc-6.3.0.tar.bz2

当然,https://ftp.gnu.org/gnu/gcc  里面有所有的gcc版本供下载,最新版本已经有6.3.0啦.

建议下载.bz2的压缩包,文件更小,下载时间更少.

2、 下载供编译需求的依赖项

cd gcc-6.3.0

./contrib/download_prerequisites

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

mkdir gcc-build-6.3.0

cd gcc-build-6.3.0

4、 生成Makefile文件

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

5、 编译

make -j4

-j4选项是make对多核处理器的优化,如果不成功请使用 make,相关优化选项可以移步至参考文献[2]。

(注意:此步骤非常耗时,我虚拟机耗时近3小时; 实体机近80分钟,CPU基本是满的,内存也使用不少)

6、 安装

make install

(安装需要root权限!)

mv /usr/bin/gcc /usr/bin/gcc.bckup
ln -s /usr/local/bin/gcc /usr/bin/gcc

查看安装

ls /usr/local/bin | grep gcc

7、 重启,然后查看gcc版本

gcc -v

8、 写个C++11 特性的程序段 测试

tryCpp11.cc 

g++ -std=c++11 -o tryCpp11 tryCpp11.cc

 

顺利编译成功,执行./testCpp11提示:

  1. ./testCpp11: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./testCpp11)

  2. ./testCpp11: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./testCpp11)

  3. ./testCpp11: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./testCpp11)

看来动态库并没有更新。

9、升级gcc,生成的动态库没有替换老版本gcc的动态库

源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。

9.1 运行以下命令检查动态库:

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

从输出可以看出,gcc的动态库还是旧版本的。说明出现这些问题,是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库。

9.2 执行以下命令,查找编译gcc时生成的最新动态库:

find / -name "libstdc++.so*"

将上面的最新动态库libstdc++.so.6.0.22复制到/usr/lib64目录下

cd /usr/lib64

cp /backup/gcc-6.3.0/gcc-build-6.3.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 ./

9.3 删除原来软连接:

rm -rf libstdc++.so.6

或者:
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6_backup
ln -s /usr/local/lib64/libstdc++.so.6.0.22 /usr/lib64/libstdc++.so.6

9.4 将默认库的软连接指向最新动态库:

ln -s libstdc++.so.6.0.22 libstdc++.so.6

9.5 默认动态库升级完成。重新运行以下命令检查动态库:

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

可以看到 输出有"GLIBCXX_3.4.22" 了

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 首先,你需要下载新版本的 OpenSSL,可以在其他设备上下载并将其传输到 CentOS 7 服务器上。然后,按照以下步骤进行离线升级: 1. 安装 OpenSSL 的依赖包: ``` yum install -y make gcc perl-core zlib-devel ``` 2. 解压 OpenSSL: ``` tar -xzf openssl-1.1.1k.tar.gz cd openssl-1.1.1k ``` 3. 配置 OpenSSL: ``` ./config ``` 4. 编译 OpenSSL: ``` make ``` 5. 安装 OpenSSL: ``` make install ``` 6. 检查 OpenSSL 版本: ``` openssl version ``` 7. 更新 ld.so.conf 文件: ``` echo "/usr/local/ssl/lib" >> /etc/ld.so.conf ldconfig -v ``` 现在,你已经成功地离线升级了 OpenSSL 版本。请注意,在更新 OpenSSL 时,你需要确保所有依赖项都满足,并且在升级之前备份你的数据。 ### 回答2: 要在CentOS 7离线升级OpenSSL版本,可以按照以下步骤进行操作: 1. 在另一台联网的计算机上下载所需的OpenSSL版本的离线安装包。你可以访问OpenSSL的官方网站或第三方软件源来获取它。 2. 使用USB存储设备或其他适配器将离线安装包传输到CentOS 7机器上。 3. 在CentOS 7机器上创建一个新的目录来存储离线安装包。例如,可以创建一个名为"openssl_update"的目录,并将离线安装包复制到该目录中。 4. 在终端或命令提示符窗口中,导航到存储离线安装包的目录。 5. 解压安装包。使用以下命令将.tar.gz或.tar.bz2格式的压缩包解压: ``` tar -xzvf openssl_version.tar.gz ``` 6. 进入解压后的目录: ``` cd openssl_version ``` 7. 执行以下命令以配置和编译OpenSSL: ``` ./config make ``` 将会生成编译后的OpenSSL文件。 8. 提权到root用户权限: ``` sudo su ``` 9. 安装新编译的OpenSSL版本。使用以下命令进行安装: ``` make install ``` 10. 让CentOS 7系统识别新安装的OpenSSL版本,更新动态链接库缓存: ``` ldconfig ``` 11. 至此,你的CentOS 7系统已成功离线升级到所需的OpenSSL版本。 请注意,离线升级将不会自动更新CentOS 7的软件仓库中的OpenSSL版本。因此,下次系统更新时,可能会将系统恢复到较旧的OpenSSL版本,因此需要重复此过程来保持所需的版本。 ### 回答3: 要在CentOS 7上进行离线升级OpenSSL版本,您可以按照以下步骤进行操作: 1. 确保您已经下载了所需的OpenSSL软件包,并将其复制到CentOS 7系统中。您可以从OpenSSL官方网站或通过其他信任的资源获取。 2. 在安装新的OpenSSL版本之前,先卸载当前系统中的旧版本。通过执行以下命令来卸载: ``` yum remove openssl ``` 3. 在进行安装之前,确保您已经更新了系统的包管理器和软件包列表,执行以下命令: ``` yum update ``` 4. 执行以下命令以安装新的OpenSSL软件包: ``` yum localinstall /path/to/openssl-package.rpm ``` 请将“/path/to/openssl-package.rpm”替换为您实际下载的OpenSSL软件包的路径。 5. 安装过程中可能会提示您确认依赖关系并安装其他软件包。按照提示进行选择并继续安装过程。 6. 安装完成后,您可以通过以下命令来验证新安装的OpenSSL版本是否成功: ``` openssl version ``` 如果命令输出显示了新安装的OpenSSL版本号,那么恭喜您,离线升级OpenSSL版本已经完成了。 注意:离线升级需要手动管理软件包和依赖关系,并且可能与系统上其他软件包产生冲突。在进行离线升级之前,请确保您已经备份了重要的系统文件,并在测试环境中先进行升级以避免可能的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

samoyan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值