Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to install gcc/g++ 9 on CentOS 8 docker (centos:latest)

In order to use the C++17 include <filesystem> I need gcc-9 package in my centos docker.

By default centos:latest (aka 8) will install gcc 8.3.1 from the regular distro repo.

Is there any PPA, testing repo, whatever, where I can easily install a gcc-9 (or later) package (i.e. not build it from source)

Thanks !

note: need gcc-9 to have good C++17 <filesystem> support.
GCC 9 Release note:

Using the types and functions in <filesystem> does not require linking with -lstdc++fs now.

src: https://gcc.gnu.org/gcc-9/changes.html

note2: CMake 3.16* doesn't support any cxx_filesystem compiler feature AFAIK.
ref: https://cmake.org/cmake/help/latest/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html

note3: you can found log here: https://github.com/Mizux/KalistoUnpacker/runs/642516660?check_suite_focus=true

like image 812
Mizux Avatar asked Oct 20 '25 02:10

Mizux


1 Answers

Simply use dnf

dnf -y install gcc-toolset-9-gcc gcc-toolset-9-gcc-c++
source /opt/rh/gcc-toolset-9/enable

ref: https://centos.pkgs.org/8/centos-appstream-x86_64/gcc-toolset-9-gcc-9.1.1-2.4.el8.x86_64.rpm.html

Note: source won't work inside a Dockerfile so prefer to use:

ENV PATH=/opt/rh/gcc-toolset-9/root/usr/bin:$PATH

or better

RUN dnf -y install gcc-toolset-9-gcc gcc-toolset-9-gcc-c++

RUN echo "source /opt/rh/gcc-toolset-9/enable" >> /etc/bashrc
SHELL ["/bin/bash", "--login", "-c"]
RUN gcc --version
like image 197
Mizux Avatar answered Oct 21 '25 16:10

Mizux



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!