简体   繁体   English

如何在 Fedora 上安装旧版本的 gcc

[英]How to install an older version of gcc on Fedora

I tried to install CUDA on Fedora 31 but got stuck at the last step because CUDA officially supports Fedora 29 (gcc 8.2) while the version shipped with Fedora 31 is 9.2, I then installed Pytorch with CUDA support and without much surprise, CUDA support is not present: I tried to install CUDA on Fedora 31 but got stuck at the last step because CUDA officially supports Fedora 29 (gcc 8.2) while the version shipped with Fedora 31 is 9.2, I then installed Pytorch with CUDA support and without much surprise, CUDA support is不存在:

>>> import torch
>>> device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
>>> device
device(type='cpu')

I then tried to search for gcc, g++ and gfortran on pkgs , but got stuck in a dependency hell, something like:然后我尝试在pkgs上搜索 gcc、g++ 和 gfortran ,但陷入了依赖地狱,例如:

sudo dnf install gcc-8.2.1-2.fc29.x86_64.rpm gcc-gfortran-8.2.1-2.fc29.x86_64.rpm gcc-c++-8.2.1-2.fc29.x86_64.rpm -y

Error: 
 Problem 1: conflicting requests
  - nothing provides cpp = 8.2.1-2.fc29 needed by gcc-8.2.1-2.fc29.x86_64
  - nothing provides libgomp = 8.2.1-2.fc29 needed by gcc-8.2.1-2.fc29.x86_64
 Problem 2: conflicting requests
  - nothing provides libgfortran = 8.2.1-2.fc29 needed by gcc-gfortran-8.2.1-2.fc29.x86_64
  - nothing provides libquadmath = 8.2.1-2.fc29 needed by gcc-gfortran-8.2.1-2.fc29.x86_64
  - nothing provides libquadmath-devel = 8.2.1-2.fc29 needed by gcc-gfortran-8.2.1-2.fc29.x86_64
 Problem 3: conflicting requests
  - nothing provides libstdc++ = 8.2.1-2.fc29 needed by gcc-c++-8.2.1-2.fc29.x86_64
  - nothing provides libstdc++-devel = 8.2.1-2.fc29 needed by gcc-c++-8.2.1-2.fc29.x86_64

I found a bunch helpful links on this post but unfortunately the last version is gcc 7.3 My last option is building from source, but apart from that is there any other option?我在这篇文章中找到了一堆有用的链接,但不幸的是,最后一个版本是 gcc 7.3 我的最后一个选择是从源代码构建,但除此之外还有其他选择吗? I'm not sure my computer can handle the compilation in a decent amount of time.我不确定我的计算机能否在相当长的时间内处理编译。

Build gcc-8.2.0构建 gcc-8.2.0

# dnf install gcc-c++ flex bison binutils-devel elfutils-devel elfutils-libelf-devel texinfo doxygen zlib-devel
tar xvf gcc-8.2.0.tar.xz 
cd gcc-8.2.0/
tar xvf mpfr-4.0.2.tar.xz && mv -v mpfr-4.0.2 mpfr
tar xvf gmp-6.1.2.tar.xz && mv -v gmp-6.1.2 gmp
tar xvf mpc-1.1.0.tar.gz && mv -v mpc-1.1.0 mpc
cd ../
mkdir build-gcc820
cd build-gcc820/
../gcc-8.2.0/configure --prefix=/usr/local/gcc82 --program-suffix=82 --enable-languages=c,c++,fortran --disable-multilib --disable-libstdcxx-pch --with-system-zlib
make 
# make install

Result: gcc82-c++-8.2.0-2.fc29.x86_64.rpm https://drive.google.com/file/d/1qGPvF9jc6CiI1a0-c3I4Zj4vxajEwSzc/view?usp=sharing Provides /usr/bin/{gcc8, g++8, gfortran8}结果: gcc82-c++-8.2.0-2.fc29.x86_64.rpm https://drive.google.com/file/d/1qGPvF9jc6CiI1a0-c3I4Zj4vxajEwSzc/view?usp=sharing提供/usr/bin/{gcc8, g++8, gfortran8}

Install: # dnf install Downloads/gcc82-c++-8.2.0-2.fc29.x86_64.rpm安装: # dnf install Downloads/gcc82-c++-8.2.0-2.fc29.x86_64.rpm

Offline GCC4.4.4 installation离线GCC4.4.4安装

How to install GCC4.4.4 or GCC444 by replace the new version using RMP package?如何通过使用 RMP package 替换新版本来安装 GCC4.4.4 或 GCC444?

  • GCC444 RMP dependence and order of input file. GCC444 RMP 依赖和输入文件的顺序。
  • then:然后:
sudo rpm -ivh --force gcc-4.4.4-2.fc13.x86_64.rpm gmp-4.3.1-6.fc13.x86_64.rpm gmp-devel-4.3.1-6.fc13.x86_64.rpm gcc-c++-4.4.4-2.fc13.x86_64.rpm cloog-ppl-0.15.7-1.fc12.x86_64.rpm cpp-4.4.4-2.fc13.x86_64.rpm glibc-2.12-1.x86_64.rpm glibc-common-2.12-1.x86_64.rpm glibc-devel-2.12-1.x86_64.rpmglibc-headers-2.12-1.x86_64.rpm kernel-headers-2.6.33.3-85.fc13.x86_64.rpm libgcc-4.4.4-2.fc13.x86_64.rpm libstdc++-4.4.4-2.fc13.x86_64.rpm libstdc++-devel-4.4.4-2.fc13.x86_64.rpm libgomp-4.4.4-2.fc13.x86_64.rpm mpfr-2.4.2-1.fc13.x86_64.rpm ppl-0.10.2-10.fc12.x86_64.rpm

You should have an output such as:你应该有一个 output 例如:

    warning: gcc-4.4.4-2.fc13.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID e8e                40fde: NOKEY
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:libgcc-4.4.4-2.fc13              ################################# [  6%]
       2:glibc-common-2.12-1              ################################# [ 12%]
       3:glibc-2.12-1                     warning: /etc/localtime created as /etc/lo                caltime.rpmnew
    warning: /etc/nsswitch.conf created as /etc/nsswitch.conf.rpmnew
    ################################# [ 18%]
       4:libstdc++-4.4.4-2.fc13           ################################# [ 24%]
       5:gmp-4.3.1-6.fc13                 ################################# [ 29%]
       6:mpfr-2.4.2-1.fc13                ################################# [ 35%]
       7:cpp-4.4.4-2.fc13                 ################################# [ 41%]
       8:ppl-0.10.2-10.fc12               ################################# [ 47%]
       9:cloog-ppl-0.15.7-1.fc12          ################################# [ 53%]
      10:libstdc++-devel-4.4.4-2.fc13     ################################# [ 59%]
      11:libgomp-4.4.4-2.fc13             ################################# [ 65%]
      12:kernel-headers-2.6.33.3-85.fc13  ################################# [ 71%]
      13:glibc-headers-2.12-1             ################################# [ 76%]
      14:glibc-devel-2.12-1               ################################# [ 82%]
      15:gcc-4.4.4-2.fc13                 ################################# [ 88%]
      16:gcc-c++-4.4.4-2.fc13             ################################# [ 94%]
      17:gmp-devel-4.3.1-6.fc13           ################################# [100%]

You can assert you have what is expected with:您可以断言您拥有预期的内容:

gcc --version

That gives:这给出了:

    gcc (GCC) 4.4.4 20100503 (Red Hat 4.4.4-2)
    Copyright (C) 2010 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

You can use one of the 3rd-party repo-agnostic package collections, such as Nixpkgs , Homebrew On Linux , or pkgsrc .您可以使用与第 3 方回购无关的 package collections 之一,例如Nixpkgs 、 Linux 上的Homebrewpkgsrc之一。

Out of these, I recommend avoiding Nixpkgs, because it tries to isolate you from libraries installed outside of itself, which sometimes makes sense (reproducible builds), but creates extra work for users in common scenarios.其中,我建议避免使用 Nixpkgs,因为它会尝试将您与安装在其外部的库隔离开来,这有时是有意义的(可重现的构建),但会在常见情况下为用户创建额外的工作。

I choose to use Homebrew On Linux for myself.我选择为自己使用 Linux 上的 Homebrew。 First I installed Homebrew according to instructions on the site, and then首先我按照网站上的说明安装了 Homebrew,然后

$ brew install 'gcc@10'
   [... installing ...]
$ which gcc-10
/home/linuxbrew/.linuxbrew/bin/gcc-10

Done, gcc-10 is available to me.完成, gcc-10可供我使用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM