首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在centos 6上恢复系统的gcc编译器

如何在centos 6上恢复系统的gcc编译器
EN

Stack Overflow用户
提问于 2018-09-12 23:33:43
回答 2查看 786关注 0票数 0

我在集群上运行centos 6。我安装了最新的gcc-8.2.0。并做了链接"ln -sf /usr/bin/gcc-8.2. gcc“。我对g++和gfortran做了同样的事情。我想重新安装gcc-8.2.0,并继续进行

代码语言:javascript
复制
make clean

在gcc-8.2目录中。当我尝试的时候

代码语言:javascript
复制
./configure

我知道C编译器不能创建可执行文件,我创建的链接被破坏了。找不到系统gcc-4.4.7

代码语言:javascript
复制
which gcc

给不了,gcc

代码语言:javascript
复制
sudo yum install gcc gcc-c++

给gcc的已经装好了。我尝试安装rpm,但由于依赖关系而失败。使用配置时,我在/opt/pgi中安装了pg编译器

代码语言:javascript
复制
CC=/path to/pgi/bin/pgcc FC=/path to/pgi/bin/pgfortran ./configure

我仍然得到C编译器无法创建可执行文件我尝试了以下c++程序

代码语言:javascript
复制
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!" << endl;
return 0;
}

使用命令

代码语言:javascript
复制
/opt/pgi/linux_86_64/12.08/bin/pgcpp hello.cpp -o hello

它给出了编译错误,即找不到flowat.h。在另一台运行着gcc的linux PC上,该程序使用以下命令运行

代码语言:javascript
复制
g++ hello.cpp -o hello

如果能找到systemgcc或者使用pg编译器编译gcc,我将不胜感激。

我承认这是一个很大的混乱,需要重新安装和重新配置操作系统。但后来我做到了

代码语言:javascript
复制
sudo yum install compat-gcc-34

现在我有了gcc34,并且在没有"c编译器无法创建可执行文件“的情况下完成了对gcc-8.2的配置。(请注意,前面的文章中提到的./configure实际上是

代码语言:javascript
复制
../gcc_8_2_release/configure

我现在遇到的问题是需要g++的gcc_8_2_release_build,它会给出错误

代码语言:javascript
复制
uint_t(64) or int_t(64) not found.

感谢所有通过这篇文章的人,感谢你们的耐心。任何帮助都将不胜感激。

这就是我是如何走出困境的。使用以下两个命令

代码语言:javascript
复制
sudo yum install compat-gcc-34-c++
sudo yum install compat-gcc-34-g77

我能够安装较老版本的gcc,c++和g77。然后我就可以构建“gcc-8.2”了。现在我有了一个功能正常的系统,带有最新的gcc,是的,它可能需要重新安装/重新配置,但它是完全功能的。我学到了很多,非常感谢@Basile的评论和指导。然而,在某种程度上,他相当消极和令人沮丧。但多亏了我的信念和毅力,更重要的是浏览了别人分享的知识,我已经能够找回我开始确信是失败的事业。谢谢大家。

EN

回答 2

Stack Overflow用户

发布于 2018-09-12 23:41:56

这与其说是一个编程问题,不如说是一个系统管理员问题。

我的建议是:

  • 不要弄乱你的/usr/bin/。让你的包管理器从头开始填充它,永远不要在里面添加任何没有从头开始的符号链接;所以手动删除你在那里建立的任何符号链接(通过使用旧的系统yum 4.4 -and yum 4.4 (使用你的GCC 8-andyum gcc 8从头开始)。使用--program-suffix=-8配置它(但不使用--prefix,如果您没有根用户访问权限,则使用--prefix=$HOME/soft/ )。所以它会安装/usr/local/bin/gcc-8/usr/local/bin/g++-8等。(或者,如果您已经为符号链接提供了--prefix=$HOME/soft/,a $HOME/soft/bin/gcc-8 etc...)
  • create a $HOME/bin/如果您还没有一个符号链接,请确保在您的符号中早些时候拥有
  • (在/usr/bin/)
  • add a symlink ln -sv /usr/local/bin/gcc-8 $HOME/bin/gcc之前,对于g++等也是如此)。

然后,当您输入gcc时,您将获得指向/usr/local/bin/gcc-8等的符号链接。

如果您无法写入/usr/local/ (例如,因为您没有根权限...)您可以将--prefix=$HOME/soft/传递给GCC 8 .../configure,然后将上面的/usr/local/替换为$HOME/soft/

如果您是系统管理员并且可以写入/usr/local/,并且必须为许多用户设置以下内容:添加符号链接、ln -s /usr/local/bin/gcc-8 /usr/local/bin/gcc等,并要求您的用户将/usr/local/bin/放在他们的$PATH中,然后再放入/usr/bin/

顺便说一句,请注意,文档中明确说明了需要在其源代码树之外构建GCC 8(或其他版本):在Installing GCC中,您可以阅读:

首先,我们强烈建议将构建到一个独立于源代码的目录中,该目录不在源代码树中。

(“强烈推荐”应该被认为是说“你绝对应该”的一种礼貌方式)

所以你的./configure是另一个错误。

可能发生的情况是,你弄乱了系统比你想象的更严重(也许你需要重新安装,或者打电话给Redhat技术支持)。

PS。我不知道Redhat (只在上个世纪使用过)。我最喜欢的发行版是Debian/testing或Debian/unstable (我的计算机是台式机,而不是集群)。

票数 3
EN

Stack Overflow用户

发布于 2018-09-20 15:13:22

这个问题是通过以下命令解决的

代码语言:javascript
复制
sudo yum install compat-gcc-34-c++
sudo yum install compat-gcc-34-g77

一旦安装了这个旧版本的gcc,就构建了最新的版本,即gcc-8.2,系统不再是一团糟。它是非常健康和合适的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52298842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档