c++ - 如何在 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
解决方案
Fedora/CentOS 不使用替代方案来选择编译器。Fedora/CentOS 确实拥有并使用了替代包。然而,alternatives 不会自动管理每个已安装的软件应用程序,并且必须明确设置每个软件包以使用alternatives,而在 Fedora/CentOS 中,gcc 根本没有这样做。
构建 gcc 绝非易事。相比之下,使用自定义 gcc 构建的显式路径似乎微不足道。或者,首先将自定义构建的 gcc 的位置放在 PATH 环境变量中,然后继续进行其他操作。
推荐阅读
- c# - 打包 React 组件以在其他 Visual Studio 2017 MVC 项目中重用
- r - 如何为每一列重复计算?
- oracle - 如何在 pl/sql 包中定义 dbms_scheduler.create_job?
- c# - UWP:无法在列表视图上加载图像
- node.js - AWS Lambda 没有触发 nodejs 请求模块
- php - guzzle 从响应中读取值
- angular - 如何将正常的 for 循环复制到 *ngFor
- python - Python Pandas,删除 NaN
- scala - 如何测试偏移量是否已提交给 Kafka
- azure-devops - Azure DevOps 发布进度视图未打开