InsightSoftwareConsortium / InsightSoftwareConsortium/ITK

Build fails on Arm64 with recent glibc and gcc

Open
#6,058 9 comments 0 reactions 0 assignees View on GitHub
type:Bug type:Compiler
Dominant language
C++
Stars
1.7k
Forks
748
Avg merge
1d 1h
Merged PRs (30d)
64

Description

### Description

We're trying to include ITK in the [EESSI](https://eessi.io) software stack by building it with EasyBuild (using this recipe: https://github.com/easybuilders/easybuild-easyconfigs/blob/develop/easybuild/easyconfigs/i/ITK/ITK-5.4.5-foss-2025a.eb) for several types of CPUs, including Arm CPUs. While builds for x86_64 seem to work fine, we're getting lots of `unknown type name '_Float128'` errors on Arm64 CPUs, e.g. on Neoverse V1.

### Steps to Reproduce

In order to reproduce a failing build on top of the EESSI stack, one would have to configure and initialize EESSI (see https://www.eessi.io/docs/getting_access/native_installation/) first. Then it can be reproduced using:
```
module load EESSI-extend
eb -r ITK-5.4.5-foss-2025a.eb
```

which will use EESSI's EasyBuild installation to build ITK and its dependencies locally.

### Expected behavior

Successful builds on Arm64.

### Actual behavior

This is a part of the errors, but there are many more (similar ones about `Float128`).
```
[ 13%] Building C object Modules/ThirdParty/VNL/src/vxl/v3p/netlib/CMakeFiles/itkv3p_netlib.dir/lapack/double/dlaswp.c.o
cd /tmp/bedroge/easybuild/build/ITK/5.4.5/foss-2025a/easybuild_obj/Modules/ThirdParty/VNL/src/vxl/v3p/netlib && /tmp/eb-gbrspgcd/tmpfn826q3e/rpath_wrappers/gcc_wrapper/gcc --sysroot=/c
vmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64 -DV3P_NETLIB_SRC -DVXL_WARN_DEPRECATED -DVXL_WARN_DEPRECATED_ONCE -Ditkv3p_netlib_EXPORTS -I/tmp/bedroge/easybuild/build/IT
K/5.4.5/foss-2025a/ITK-5.4.5/Modules/ThirdParty/VNL/src/vxl/v3p/netlib -I/tmp/bedroge/easybuild/build/ITK/5.4.5/foss-2025a/ITK-5.4.5/Modules/ThirdParty/VNL/src/vxl/vcl -I/tmp/bedroge/e
asybuild/build/ITK/5.4.5/foss-2025a/ITK-5.4.5/Modules/ThirdParty/VNL/src/vxl/core -I/tmp/bedroge/easybuild/build/ITK/5.4.5/foss-2025a/easybuild_obj/Modules/ThirdParty/VNL/src/vxl/v3p/n
etlib -I/tmp/bedroge/easybuild/build/ITK/5.4.5/foss-2025a/easybuild_obj/Modules/ThirdParty/VNL/src/vxl/vcl -I/tmp/bedroge/easybuild/build/ITK/5.4.5/foss-2025a/easybuild_obj/Modules/Thi
rdParty/VNL/src/vxl/core -O2 -ftree-vectorize -mcpu=native -fno-math-errno -Wno-uninitialized -Wno-unused-parameter -Wall -Wcast-align -Wdisabled-optimization -Wextra -Wformat=2 -Winv
alid-pch -Wno-format-nonliteral -Wpointer-arith -Wshadow -Wunused -Wwrite-strings -Wno-strict-overflow -w -O3 -DNDEBUG -std=c11 -fPIC -MD -MT Modules/ThirdParty/VNL/src/vxl/v3p/netli
b/CMakeFiles/itkv3p_netlib.dir/lapack/double/dlaswp.c.o -MF CMakeFiles/itkv3p_netlib.dir/lapack/double/dlaswp.c.o.d -o CMakeFiles/itkv3p_netlib.dir/lapack/double/dlaswp.c.o -c /tmp/bed
roge/easybuild/build/ITK/5.4.5/foss-2025a/ITK-5.4.5/Modules/ThirdParty/VNL/src/vxl/v3p/netlib/lapack/double/dlaswp.c
In file included from /tmp/bedroge/easybuild/build/ITK/5.4.5/foss-2025a/easybuild_obj/Wrapping/castxml_inputs/itkFixedArray.cxx:1:
In file included from /tmp/bedroge/easybuild/build/ITK/5.4.5/foss-2025a/ITK-5.4.5/Modules/Core/Common/include/itkCommand.h:21:
In file included from /tmp/bedroge/easybuild/build/ITK/5.4.5/foss-2025a/ITK-5.4.5/Modules/Core/Common/include/itkObject.h:31:
In file included from /tmp/bedroge/easybuild/build/ITK/5.4.5/foss-2025a/ITK-5.4.5/Modules/Core/Common/include/itkLightObject.h:21:
In file included from /tmp/bedroge/easybuild/build/ITK/5.4.5/foss-2025a/ITK-5.4.5/Modules/Core/Common/include/itkMacro.h:47:
In file included from /cvmfs/software.eessi.io/versions/2025.06/software/linux/aarch64/neoverse_v1/software/GCCcore/14.2.0/lib/gcc/aarch64-unknown-linux-gnu/14.2.0/../../../../include/
c++/14.2.0/string:42:
In file included from /cvmfs/software.eessi.io/versions/2025.06/software/linux/aarch64/neoverse_v1/software/GCCcore/14.2.0/lib/gcc/aarch64-unknown-linux-gnu/14.2.0/../../../../include/
c++/14.2.0/bits/char_traits.h:42:
In file included from /cvmfs/software.eessi.io/versions/2025.06/software/linux/aarch64/neoverse_v1/software/GCCcore/14.2.0/lib/gcc/aarch64-unknown-linux-gnu/14.2.0/../../../../include/
c++/14.2.0/bits/postypes.h:40:
In file included from /cvmfs/software.eessi.io/versions/2025.06/software/linux/aarch64/neoverse_v1/software/GCCcore/14.2.0/lib/gcc/aarch64-unknown-linux-gnu/14.2.0/../../../../include/
c++/14.2.0/cwchar:44:
/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/include/wchar.h:432:8: error: unknown type name '_Float128'
432 | extern _Float128 wcstof128 (const wchar_t *__restrict __nptr,
| ^
/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/include/wchar.h:661:8: error: unknown type name '_Float128'
661 | extern _Float128 wcstof128_l (const wchar_t *__restrict __nptr,
| ^
```

### Reproducibility

It fails every time on the Arm CPUs that we tried.

### Versions

This is for ITK 5.4.5: https://github.com/easybuilders/easybuild-easyconfigs/blob/develop/easybuild/easyconfigs/i/ITK/ITK-5.4.5-foss-2025a.eb.

### Environment

The EESSI stack is built on top of a Gentoo Prefix operating system layer in a non-standard sysroot (`/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64`), and it has glibc version 2.41.

The EasyBuild recipe for this ITK version uses GCC 14.2.0 and Python 3.13.1. For all details, see https://github.com/easybuilders/easybuild-easyconfigs/blob/develop/easybuild/easyconfigs/i/ITK/ITK-5.4.5-foss-2025a.eb.

### Additional Information

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.