Skip to content

building GCCcore/9.3.0 fails in 2021.12 compat layer because "system" GCC is too new #151

@boegel

Description

@boegel

When testing the installation of GCCcore-9.3.0.eb in the 2021.12 compat layer (cfr. EESSI/compatibility-layer#126), I'm hitting two problems:

  1. The compilation of GCC itself fails due to too recent Linux kernel headers:
../../../../libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:160:10: fatal error: linux/cyclades.h: No such file or directory
  160 | #include <linux/cyclades.h>
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.

This can be fixed fairly easily by using the patch available in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100379, which is done in easybuilders/easybuild-easyconfigs#14453.

  1. Another more serious problem emerges later in the build, when GMP is being built. The configure script fails with:
configure: error: could not find a working compiler, see config.log for details

config.log reveals the problem:

/cvmfs/pilot.eessi-hpc.org/2021.12/compat/linux/aarch64/usr/bin/ld.gold: /tmp/ec2-user/easybuild/build/GCCcore/9.3.0/system-system/GCC_stage1_eb/lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /cvmfs/pilot.eessi-hpc.org/2021.12/compat/linux/aarch64/usr/bin/ld.gold)
collect2: error: ld returned 1 exit status

This is basically due to building an old compiler (GCC 9.3) on a system with a very recent GCC (11.2 in compat layer).

To fix this, we should i) install an older version of GCC in the compat layer (by including it to the EESSI 2021.12 sets), and ii) make that the default system compiler instead of using the latest version (via gcc-config, see also EESSI/compatibility-layer#128).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions