首页 > 解决方案 > 如何在 centos 中使用更新选项?

问题描述

我正在尝试在 centos 6.0 上更新 GCC(对于 docker 上的 manylinux pip 轮)。由于无法下载更高版本的 gcc,我自己构建了 gcc-10.2。我现在正在尝试更新 centos 以使用新的 gcc/g++ 程序而不是旧程序。在 ubuntu 上执行此操作的命令是

update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10

而且似乎centos也有类似的工具。然而,尽管阅读了文档,但我无法让命令(有几个变体)工作。这是我正在运行的命令:

[root@aa5149016e33 /]# update-alternatives --install /usr/bin/g++ g++ gcc-10.2-centos/bin/g++
alternatives version 1.3.49.5 - Copyright (C) 2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage: alternatives --install <link> <name> <path> <priority>
                    [--initscript <service>]
                    [--slave <link> <name> <path>]*
       alternatives --remove <name> <path>
       alternatives --auto <name>
       alternatives --config <name>
       alternatives --display <name>
       alternatives --set <name> <path>

common options: --verbose --test --help --usage --version
                --altdir <directory> --admindir <directory>
[root@aa5149016e33 /]#

如何更新 centos 以便命令

gcc --version

g++ --version

参考 gcc 10.2?

另请注意,我正在从根目录工作

[root@aa5149016e33 /]# tree -L 1 .
.
├── bin
├── boot
├── cgroup
├── dev
├── etc
├── gcc-10.2-centos
├── gcc-10.2-centos.zip
├── home
├── lib
├── lib64
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── sbin
├── selinux
├── srv
├── sys
├── tmp
├── usr
└── var

[root@aa5149016e33 /]# tree -L 1 gcc-10.2-centos/bin/
gcc-10.2-centos/bin/
├── c++
├── cpp
├── g++
├── gcc
├── gcc-ar
├── gcc-nm
├── gcc-ranlib
├── gcov
├── gcov-dump
├── gcov-tool
├── lto-dump
├── x86_64-pc-linux-gnu-c++
├── x86_64-pc-linux-gnu-g++
├── x86_64-pc-linux-gnu-gcc
├── x86_64-pc-linux-gnu-gcc-10.2.0
├── x86_64-pc-linux-gnu-gcc-ar
├── x86_64-pc-linux-gnu-gcc-nm
└── x86_64-pc-linux-gnu-gcc-ranlib

0 directories, 18 files

标签: c++cdockergcccentos

解决方案


Fedora/CentOS 不使用替代方案来选择编译器。Fedora/CentOS 确实拥有并使用了替代包。然而,alternatives 不会自动管理每个已安装的软件应用程序,并且必须明确设置每个软件包以使用alternatives,而在 Fedora/CentOS 中,gcc 根本没有这样做。

构建 gcc 绝非易事。相比之下,使用自定义 gcc 构建的显式路径似乎微不足道。或者,首先将自定义构建的 gcc 的位置放在 PATH 环境变量中,然后继续进行其他操作。


推荐阅读