gcc: The GNU Compiler Collection or other suitable C and C++ compilers - Packages and Features

Skip to content
Back to top
View this page
Edit this page

# gcc: The GNU Compiler Collection or other suitable C and C++ compilers

## Description

This package represents the required C and C++ compilers.

- GCC (GNU Compiler Collection) versions 8.x (>= 8.4.0) to 13.x are supported.

- Clang (LLVM) is also supported.

The required Fortran compiler is represented by the package `gfortran`.

You can pass the names of compilers to use to `./configure` using the environment variables `CC`, `CXX`, and `FC`, for C, C++, and Fortran compilers, respectively.

For example, if your C compiler is `clang`, your C++ compiler is `clang++`, and your Fortran compiler is `flang`, then you would need to run:

    $ ./configure CC=clang CXX=clang++ FC=flang

Vendor and versions of the C and C++ compilers should match.

Users of older Linux distributions (in particular, `ubuntu-xenial` or older, `debian-buster` or older, `linuxmint-18` or older) should upgrade their systems before attempting to install Sage from source. Users of `ubuntu-bionic`, `linuxmint-19.x`, and `opensuse-15.x` can install a versioned `gcc` system package and then use:

    $ ./configure CC=gcc-8 CXX=g++-8 FC=gfortran-8

or similar. Users on `ubuntu` can also install a modern compiler toolchain using the ubuntu-toolchain-r ppa. On `ubuntu-trusty`, also the package `binutils-2.26` is required; after installing it, make it available using `export PATH="/usr/lib/binutils-2.26/bin:$PATH"`. Instead of upgrading their distribution, users of `centos-7` can install a modern compiler toolchain using Redhat’s devtoolset.

This package uses the non-standard default `configure --with-system-gcc=force`, giving an error at `configure` time when no suitable system compilers are configured.

You can override this using `./configure --without-system-gcc`. In this case, Sage builds and installs the GNU Compiler Collection, including the C, C++ and Fortran compiler. This is not recommended. You will need suitable C and C++ compilers from which GCC can bootstrap itself. There are some known problems with old assemblers, in particular when building the `ecm` and `fflas_ffpack` packages. You should ensure that your assembler understands all instructions for your processor. On Linux, this means you need a recent version of `binutils` (not provided by an SPKG); on macOS you need a recent version of Xcode.

(Installing the `gfortran` SPKG becomes a no-op in this case.)

Building Sage from source on Apple Silicon (M1, M2, M3, M4; arm64) requires the use of Apple’s Command Line Tools, and those tools include a suitable compiler. Sage’s `gcc` SPKG is not suitable for Apple Silicon; building it will likely fail.

## License

GPL version 2 or version 3

## Upstream Contact

https://gcc.gnu.org/

## Type

standard

## Dependencies

- $(MP_LIBRARY)

- mpc: Arithmetic of complex numbers with arbitrarily high precision and correct rounding

- mpfr: Multiple-precision floating-point computations with correct rounding

- xz: General-purpose data compression software

## Version Information

package-version.txt:

    14.2.0

## Equivalent System Packages

Arch Linux

    $ sudo pacman -S gcc

Debian/Ubuntu

    $ sudo apt-get install gcc g++

Fedora/Redhat/CentOS

    $ sudo dnf install gcc gcc-c++ gcc-gfortran

FreeBSD

    $ sudo pkg install lang/gcc9

Homebrew

    $ brew install gcc

openSUSE

    $ sudo zypper install gcc-c++

Void Linux

    $ sudo xbps-install gcc

See https://repology.org/project/gcc/versions

If the system package is installed, `./configure` will check if it can be used.