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

时间:2018-09-12 15:33:43

标签: c++ linux gcc

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

make clean
gcc-8.2目录中的

。 当我尝试

./configure

我知道C编译器无法创建可执行文件 我建立的链接已断开。 找不到系统gcc-4.4.7

which gcc

不提供gcc

sudo yum install gcc gcc-c++

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

CC=/path to/pgi/bin/pgcc FC=/path to/pgi/bin/pgfortran ./configure

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

#include <iostream>
using namespace std;
int main() {
cout << "Hello world!" << endl;
return 0;
}

使用命令

/opt/pgi/linux_86_64/12.08/bin/pgcpp hello.cpp -o hello

它给出了未找到float.h的编译错误。在另一台运行gcc的Linux PC上,该程序可以使用以下命令

g++ hello.cpp -o hello

如果能找到systemgcc或使用pg编译器编译gcc的任何帮助,我将不胜感激

我承认这是一团糟,需要重新安装和重新配置操作系统。但是后来我做到了

sudo yum install compat-gcc-34

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

../gcc_8_2_release/configure

在“ gcc_8_2_release_build”内部,因此未在其源目录中构建gcc。 我现在遇到的问题是make,它需要g ++,给出错误

uint_t(64) or int_t(64) not found.

感谢所有耐心等待这篇文章的人。 任何帮助将不胜感激。

这是我摆脱困境的方式。 使用以下两个命令

sudo yum install compat-gcc-34-c++
sudo yum install compat-gcc-34-g77

我能够安装旧版本的gcc,c ++和g77。然后,我能够构建gcc-8.2。 现在,我有了一个带有最新gcc的功能系统,是的,它可能需要重新安装/重新配置,但功能齐全。 我学到了很多东西,非常感谢@Basile的评论和指南。但是,有一点他很消极并且沮丧。 但是由于我的信念和毅力,更重要的是浏览了其他人共享的知识,我才得以恢复我开始被认为是失败的事业。 谢谢大家。

2 个答案:

答案 0 :(得分:3)

这比编程问题更多是系统管理员问题。

我的建议

  • 不要弄乱您的/usr/bin/。让您的包管理器yum来填充它-切勿在没有yum的情况下在其中添加任何内容;因此,请手动删除您在此处所做的任何符号链接(错误)

  • 使用gcc重新安装旧系统g++ 4.4和yum 4.4(使用--program-suffix=-8

  • 从源代码开始重新构建GCC 8。使用--prefix(但没有--prefix=$HOME/soft//usr/local/bin/gcc-8(如果您没有root访问权限))进行配置。因此它将安装/usr/local/bin/g++-8--prefix=$HOME/soft/等...(或者,如果您给了$HOME/soft/bin/gcc-8,则$HOME/bin/等...)

  • 创建$HOME/bin/(如果您还没有的话)

  • 确保$PATH/usr/bin/早于{em}(在ln -sv /usr/local/bin/gcc-8 $HOME/bin/gcc之前)

  • 添加符号链接g++,并同样添加gcc等。

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

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

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

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

  

首先,我们强烈建议,将GCC建在与源代码不同的目录中,该目录不在源代码树之内。

(“强烈推荐”是一种礼貌的方式,“您绝对应该”)

所以您的function my_simple_crypt( $string) { global $secret_key, $secret_iv; $output = false; $encrypt_method = "AES-256-CBC"; $key = hash( 'sha256', $secret_key ); $iv = substr( hash( 'sha256', $secret_iv ), 0, 16 ); $output = openssl_decrypt( base64_decode( $string ), $encrypt_method, $key, 0, $iv ); return $output; } 是另一个错误。

您可能以比您想象的更严重的方式弄乱了系统(也许您需要重新安装或致电Redhat支持)。

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

答案 1 :(得分:0)

此问题已通过以下命令解决

sudo yum install compat-gcc-34-c++
sudo yum install compat-gcc-34-g77

一旦安装了较旧版本的gcc,就会构建最新版本的gcc-8.2,而系统也不会再变得混乱不堪。非常健康而且健康。